向左或向右移动当前单词(“跳过”其他单词)

时间:2011-03-09 04:39:34

标签: vim

我想将光标移动到左侧或右侧(“跳过”其他单词)。例如,如果我们有这句话:

快速的狐狸跳过懒惰的棕色狗。

我想将光标设置为“棕色”,按某些组合键并在“快速”和“狐狸”之间移动。这类似于向上和向下移动线条([e或] e),但是对于向左或向右移动的单词。

4 个答案:

答案 0 :(得分:4)

将光标下的一个字移到右边:

nmap <F10> dawelpb

将光标下的一个字移到左边:

nmap <F9> dawbPb

对于后跟标点符号的单词,两者都不能很好地工作。如果要移动包含该特殊字符的单词,请使用以下映射:

向右移动:

nmap <F10> dawElpB

向左移动:

nmap <F9> dawBPB

[编辑]:补充说明:

解释'dawElpB':'daw'删除光标下的单词,'E'将光标放在单词右边的光标末尾,'l'将光标向右移动一个位置,'p'过去单词和'B'将光标放在粘贴的单词的开头。

解释'dawBPB':'daw'删除光标下的单词,'B'将光标放在光标左侧的单词的开头,'P'过去单词,'B'将光标放在开头粘贴的词。

答案 1 :(得分:1)

daw5bhp

说明:

daw:在word周围删除(光标可以在“brown”里面的任何地方)

5b:回去5个字

hp:将光标移动到左侧一个空格然后粘贴

答案 2 :(得分:1)

我在.vimrc中有这些映射:

" pushes current line up & down
nnoremap <leader><Up> ddkP
nnoremap <leader><Down> ddp

" pushes word under the cursor to the left & to the right
nnoremap <leader><Left> "_yiw?\w\+\_W\+\%#<CR>:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><C-o><C-l>
nnoremap <leader><Right> "_yiw:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><C-o>/\w\+\_W\+<CR><C-l>

它比@Habi的答案更复杂 - 我将尝试 - 但它的效果非常好。

我在Vim wiki.

上找到了它

答案 3 :(得分:1)

关于vim.wikia的问题,确实有一个解决方案。 然而,多年来我一直在改变它,因为它改变了@/等各种寄存器,这会影响突出显示的搜索模式(设置hlsearch时)。

现在,我正在使用this plugin