如何在Vim中快速引用/取消引用单词并更改引用(例如从“到”)?我知道环绕的事。vim插件,但我想只使用vim。
当前回答
这里有一些地图可能会有所帮助:
:nnoremap <Leader>q" ciw""<Esc>P
:nnoremap <Leader>q' ciw''<Esc>P
:nnoremap <Leader>qd daW"=substitute(@@,"'\\\|\"","","g")<CR>P
如果您没有更改mapleader变量,那么使用\q" \q'或\qd激活映射。它们分别在光标下的单词周围添加双引号,在光标下的单词周围添加单引号,在光标下的单词周围删除任何引号。
其他回答
我不知道任何内置的vim命令,但使用r"f'r"从'到'和r'f"r'从'到'工作,如果你站在第一个'或'。命令r'将光标下的任何字符替换为',f“将您向前移动到下一个”。
这个怎么样?
:%s/\'/"/g
用引号括住所有单词:
s/\(\w\+\)/"\1"/g
之前:
aaa,bbb,ccc
后:
"aaa","bbb","ccc"
添加引用
我开始在我的.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
这里有一些简单的映射,可以用来引用和取消引用一个单词:
" '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>
推荐文章
- 如何在Vim注释掉一个Python代码块
- 如何在可视块模式插入?
- 强迫自己掌握vi的最好方法是什么?
- 如何回到行之前编辑的最后一个在Vim?
- 如何跳转到一个特定的人物在vim?
- 如何删除一个大的文本块而不计算行?
- 在Vim/Vi中,如何将光标移动到前一个单词的末尾?
- 如何在vim中自动删除尾随空格
- 为什么Vim使用~扩展名保存文件?
- 如何在Vim或Linux中将空格转换为制表符?
- 我如何使用vimdiff来解决git合并冲突?
- 在Vim中删除当前缓冲区的文件名/路径
- Git在终端提交时打开VIM,但无法返回终端
- 请参阅编辑器中的换行符和回车
- 如何在NERDTree中显示隐藏文件(以句点开始)?