如何在Vim中快速引用/取消引用单词并更改引用(例如从“到”)?我知道环绕的事。vim插件,但我想只使用vim。
当前回答
添加引用
我开始在我的.vimrc中使用这个快速而肮脏的函数:
vnoremap q <esc>:call QuickWrap("'")<cr>
vnoremap Q <esc>:call QuickWrap('"')<cr>
function! QuickWrap(wrapper)
let l:w = a:wrapper
let l:inside_or_around = (&selection == 'exclusive') ? ('i') : ('a')
normal `>
execute "normal " . inside_or_around . escape(w, '\')
normal `<
execute "normal i" . escape(w, '\')
normal `<
endfunction
所以现在,我视觉上选择任何我想要的(通常通过view - visual select inside word)在引号中,并按Q为双引号,或按Q为单引号。
删除引号
vnoremap s <esc>:call StripWrap()<cr>
function! StripWrap()
normal `>x`<x
endfunction
我使用vim-textobj-quotes,以便vim将引号视为文本对象。这意味着我可以做vaq(视觉选择周围的引号。这将查找最近的引号并可视化地选择它们。(这是可选的,你可以只做f"vww)。然后按s从选择中删除引号。
改变报价
吻。我先删除引号,然后再添加引号。 例如,要用双引号替换单引号,我将执行以下步骤: 1. 删除单引号:vaqs, 2。添加新的引用:vwQ。
这里的http://vim.wikia.com/wiki/Wrap_a_visual_selection_in_an_HTML_tag代码被修改并用作我的回答的一部分 https://github.com/beloglazov/vim-textobj-quotes vim-text-obj-quotes
其他回答
添加引用
我开始在我的.vimrc中使用这个快速而肮脏的函数:
vnoremap q <esc>:call QuickWrap("'")<cr>
vnoremap Q <esc>:call QuickWrap('"')<cr>
function! QuickWrap(wrapper)
let l:w = a:wrapper
let l:inside_or_around = (&selection == 'exclusive') ? ('i') : ('a')
normal `>
execute "normal " . inside_or_around . escape(w, '\')
normal `<
execute "normal i" . escape(w, '\')
normal `<
endfunction
所以现在,我视觉上选择任何我想要的(通常通过view - visual select inside word)在引号中,并按Q为双引号,或按Q为单引号。
删除引号
vnoremap s <esc>:call StripWrap()<cr>
function! StripWrap()
normal `>x`<x
endfunction
我使用vim-textobj-quotes,以便vim将引号视为文本对象。这意味着我可以做vaq(视觉选择周围的引号。这将查找最近的引号并可视化地选择它们。(这是可选的,你可以只做f"vww)。然后按s从选择中删除引号。
改变报价
吻。我先删除引号,然后再添加引号。 例如,要用双引号替换单引号,我将执行以下步骤: 1. 删除单引号:vaqs, 2。添加新的引用:vwQ。
这里的http://vim.wikia.com/wiki/Wrap_a_visual_selection_in_an_HTML_tag代码被修改并用作我的回答的一部分 https://github.com/beloglazov/vim-textobj-quotes vim-text-obj-quotes
用引号括住所有单词:
s/\(\w\+\)/"\1"/g
之前:
aaa,bbb,ccc
后:
"aaa","bbb","ccc"
在选定的文本块周围添加单引号的可视化模式映射示例:
:vnoremap qq <Esc>`>a'<Esc>`<i'<Esc>
如果你使用vim插件https://github.com/tpope/vim-surround(或使用VSCode vim插件,它附带了预先安装的vim-surround),它非常方便!
add
ysiw' // surround in word `'`
下降
ds' // drop surround `'`
改变
cs'" // change surround from `'` to `"`
它甚至适用于html标签!
cst<em> // change surround from current tag to `<em>`
查看github上的自述文件以获得更好的示例
引用一个词,使用单引号 被'Ctrl + r”
这样做对我来说比较容易
ciw '' Esc P