我喜欢使用拆分,但是如果不使用,我将找不到任何方法
C-W
。这迫使我使用制表符,因为我可以使用gt
,gT
或#gt
在它们之间进行切换,其中#是数字,但是我发现它不像拆分那样方便,因为我一次只能看到一个文件的内容。 > 我的终端也不支持
mouse=a
,因此我也不能使用。在没有Ctrl + W组合的情况下,如何在Vim中使用拆分?
#1 楼
您可以将<C-w>
重新映射到另一个组合,例如::nnoremap <C-e> <C-w>
现在可以使用
<C-e>
,它的作用就像您按下<C-w>
一样。这将覆盖默认的
<C-e>
映射(向下滚动)。 Vim已经使用了键盘上的每个键,而防止这种情况的唯一方法是使用引导键,该键的作用类似于“前缀”::nnoremap <Leader>w <C-w>
除非您ve重新映射了
<Leader>
,您现在可以使用\w
(彼此之后)。我实际上更喜欢这种方式,因为我不喜欢CTRL +组合键。请参阅
如何找出
评论
解决我的问题。将映射添加到我的vimrc,并进行了一些测试,没有任何问题。
–Mateon1
15年6月27日在14:16
#2 楼
实际上,我使用:wincmd
比使用Ctrl + W更频繁,因为我发现键入缩写的:winc
更容易。例如,与Ctrl + W L等效的是
:winc l
。#3 楼
我已经在我的.vimrc
中设置了以下重新映射:nmap <C-h> <C-w>h
nmap <C-j> <C-w>j
nmap <C-k> <C-w>k
nmap <C-l> <C-w>l
现在我可以使用
Ctrl+h
移动到左侧窗口,使用Ctrl+l
移动到右侧窗口,依此类推。从逻辑上讲,这似乎与Vim的常规导航非常吻合。评论
请注意,在终端中映射Ctrl + h并不总是有效,因为这通常是退格键。看到这个答案和这个问题。
–马丁·图尔诺伊(Martin Tournoij)
2015年7月3日15:29
另外,您可以使用nnoremap
–希望
19年3月12日在15:00
#4 楼
为了处理拆分,我使用了实际上非常方便的submode-plugin:它允许您创建新模式(如正常模式,可视模式,插入模式等的“模式”),在其中定义新的键绑定。这样,您就不必再使用Ctrl + w,并且由于您处于新模式,所有键都可以自由绑定:不再出现诸如“该死,我找不到一个您可以使用任何常规的插件管理器来安装插件,这是我的配置,可以给您一些启发:
我创建了一个称为
WindowsMode
的新模式,可以在其中操作拆分:call submode#enter_with('WindowsMode', 'n', '', '<Leader>k', ':echo "windows mode"<CR>')
call submode#leave_with('WindowsMode', 'n', '', '<Leader>')
这些行表示我以Leaderk和我通过Leader退出模式:按下Leaderk后,我按下的所有键将:
,如果我没有在此模式下为其定义映射,则不执行任何操作
执行我决定在此模式下映射它们的操作(请参阅其余答案)
如果我击中Leader则返回正常模式
一旦我进入
WindowsMode
,这些行就会使hjkl在Ctrl + whjkl之类的拆分中导航" Change of windows with hjkl
call submode#map('WindowsMode', 'n', '', 'j', '<C-w>j')
call submode#map('WindowsMode', 'n', '', 'k', '<C-w>k')
call submode#map('WindowsMode', 'n', '', 'h', '<C-w>h')
call submode#map('WindowsMode', 'n', '', 'l', '<C-w>l')
我用这些行用/和!分割窗口:
" split windows with / and !
call submode#map('WindowsMode', 'n', '', '/', '<C-w>s')
call submode#map('WindowsMode', 'n', '', '!', '<C-w>v')
q关闭拆分:
call submode#map('WindowsMode', 'n', '', 'q', '<C-w>c')
使用Ctrlhjkl移动拆分:
call submode#map('WindowsMode', 'n', '', '<C-j>', '<C-w>J')
call submode#map('WindowsMode', 'n', '', '<C-k>', '<C-w>K')
call submode#map('WindowsMode', 'n', '', '<C-h>', '<C-w>H')
call submode#map('WindowsMode', 'n', '', '<C-l>', '<C-w>L')
Vim子模式允许执行许多强大的功能,请参阅文档以获取更多详细信息。
EDIT这里介绍了Window子模式的另一种方法。我认为作者使用的方法更接近于回答这个问题:这里是用来创建新模式的,但是所有
<c-w>something
映射都可以在子模式下使用相同的键来使用:" Go through every letter
for key in ['a','b','c','d','e','f','g','h','i','j','k','l','m',
\ 'n','o','p','q','r','s','t','u','v','w','x','y','z']
" maps lowercase, uppercase and <C-key>
call submode#map('window', 'n', '', key, '<C-w>' . key)
call submode#map('window', 'n', '', toupper(key), '<C-w>' . toupper(key))
call submode#map('window', 'n', '', '<C-' . key . '>', '<C-w>' . '<C-'.key . '>')
endfor
" Go through symbols. Sadly, '|', not supported in submode plugin.
for key in ['=','_','+','-','<','>']
call submode#map('window', 'n', '', key, '<C-w>' . key)
endfor
这样,所有映射
<c-w>lowerCaseKey
,<c-w>upperCaseKey
,<c-w><c-Key>
和映射<c-w>=_+-<>
都可以在无前缀<c-w>
的窗口模式下访问
评论
使用映射到wincmd例如,您可以映射::nmap wj:wincmd j@AlexKroll为什么不将其发布为答案? :-)
@Carpetsmoker我认为这个问题还不够全面。 CTRL-W j与计数器一起使用(从当前位置转到下面的第n个窗口),我的解决方案不起作用。
我通常不喜欢这样的建议,但是我会寻找另一个终端。