什么Vim命令可以用来引用/不引用单词?
我如何在Vim中快速地引用/取消引用单词并改变引号(例如从'
to "
)?我知道有关surround.vim插件,但我只想使用Vim。
surround.vim将成为您最简单的答案。 如果你真的反对使用它,下面是你可以做的一些例子。 不一定是最有效的,但这就是为什么surround.vim写的。
- 引用一个单词,用单引号
ciw'Ctrl+r"'
-
ciw
– 删除光标所在的单词,并以插入模式结束。 -
'
– 添加第一个报价。 -
Ctrl+r"
– 插入"
注册"
的内容,也就是上一次的插入/删除。 -
'
– 添加结束报价。
-
- 请用单引号括起一个单词
di'hPl2x
-
di'
– 删除单引号括起来的单词。 -
hP
– 将光标向左移动一个位置(在开头引号的顶部),并将刚删除的文本放在报价之前。 -
l
– 将光标向右移动一个位置(在开头引号之上)。 -
2x
– 删除两个引号。
-
- 将单引号更改为双引号
va':s/\%V'\%V/"/g
-
va'
– 直观地select引用的单词和引号。 -
:s/
– 开始更换。 -
\%V'\%V
– 只匹配在视觉选定区域内的单引号。 -
/"/g
– 全部用双引号replace。
-
引用一个单词,用单引号
ciw'Ctrl+r"'
我这样做比较容易
ciw '' Esc P
除了其他命令之外,这将把所有单词用双引号括起来(按照你的评论)
:s/\(\S\+\)/"\1"/
或者如果你想减less反斜杠的数量,你可以在模式的开头放一个\v
(非常魔法)修饰符
:s/\v(\S+)/"\1"/
这里有一些映射可以帮助:
:nnoremap <Leader>q" ciw""<Esc>P :nnoremap <Leader>q' ciw''<Esc>P :nnoremap <Leader>qd daW"=substitute(@@,"'\\\|\"","","g")<CR>P
如果你还没有改变mapleadervariables,那么用\q"
\q'
或\qd
激活映射,在光标下的单词周围加双引号,在光标下的单词周围单引号,删除周围的引号分别在光标下的字。
要包装在单引号(例如) ciw'<Cr>"'<esc>
作品,但重复将无法正常工作。尝试:
ciw'<Cr><Co>"'<esc>
这将默认寄存器的内容“字面上”。 现在你可以按.
在任何单词包装在引号。 要了解更多信息,请参阅:h[elp] i_ctrl-r
和更多关于文本对象的信息:h text-objects
资料来源: http : //vimcasts.org/episodes/pasting-from-insert-mode/
我不知道任何内置的Vim命令,但如果你站在第一个“或”上,使用r"f'r"
从“改变”到r'f"r'
”和r'f"r'
从“变为”工作。 命令r'
用r'
replace你的光标下的任何字符,并且f"
将你移动到下一个“。
添加行情
我开始在我的.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
所以,现在,我可以通过引号select我想要的任何东西(通常通过viw
– 直观地select内部单词 ),然后按Qinput双引号,或按qinput单引号。
去除行情
vnoremap s <esc>:call StripWrap()<cr> function! StripWrap() normal `>x`<x endfunction
我使用vim-textobj引号,以便vim将引号视为文本对象。 这意味着我可以做vaq
(在视觉上select引号,find最接近的引号,并在视觉上select它们)(这是可选的,你可以做一些像f"vww
)然后我按s
从select中删除引号。
改变行情
吻。 我删除引号,然后添加引号 。 例如,要用双引号replace单引号,我将执行以下步骤:1.删除单引号: vaqs
,2.添加新引号: vwQ
。
我在我的.vimrc中使用nnoremap
单引号:
nnoremap sq :silent! normal mpea'<Esc>bi'<Esc>`pl
删除引号(双引号也适用):
nnoremap qs :silent! normal mpeld bhd `ph<CR>
规则要记住:'sq'=单引号。
下面是一些简单的映射,可以用来引用和取消引用一个单词:
" 'quote' a word nnoremap qw :silent! normal mpea'<Esc>bi'<Esc>`pl " double "quote" a word nnoremap qd :silent! normal mpea"<Esc>bi"<Esc>`pl " remove quotes from a word nnoremap wq :silent! normal mpeld bhd `ph<CR>
macros的方式
-
按shift + b将光标移动到当前单词的前面
-
按q和qlogging到q寄存器中(我们使用“q”作为记住“引号”的快捷键)。
-
按我键入' (单引号)
-
按esc键,然后按e移至词尾
-
按a,然后再按一下'用引号围住单词。
-
最后按q将其logging到
q
寄存器中。
如何使用它 :
- 将光标移动到所需的单词。
- 按@ q围住带引号的单词。
- 如果你想重复成另一个字,请按@ @ 。
你可以用你喜欢的任何东西{一行,一个字,直到find某个字符等等}来改变step 4
。 把它放入vim variables
和.vimrc
来重复你的幸福。
这个怎么样?
:%s/\'/"/g