我对vim很新,有些事我无法工作。
1)LISTCHARS。我设置vim将点放在尾随空格处,但我希望vim用文件中的点替换空格,因为现在vim只在行末尾的最后一个单词之后保存点。另外,我希望vim放一个>在当前行的开头标记并放置一些东西而不是TAB。
2)如何覆盖默认密钥绑定?例如,如果Vim有自己的绑定[Ctrl + A]
做某事我希望Shift + T
做同样的事情 - 我该怎么办?该问题的扩展:默认情况下,要在vim中的分割窗口之间移动,需要绑定[CTRL+W, arrow]
(这就像两次一致的点击)。我怎样才能覆盖它?我想使用alt + arr
代替[ctrl+w, arrow]
。
3)我做了:
nmap <C-Space> :NERDTreeToggle<CR>
切换侧边栏,但不起作用。我阅读ctrl-space
并不容易覆盖,但我仍然希望用它来切换侧边栏。
答案 0 :(得分:0)
1)如果您阅读了vim help on 'listchars'
,您会看到它提供了一个trail:c
选项,可用于使用自定义字符{{标记尾随空格1}}。我认为这是您目前使用的选项。幸运的是,从patch 7.4.711开始(另请参阅changelog),c
现在支持'listchars'
选项,可用于标记所有带有字符space:c
的空格。如果您的vim版本足够新,那么您可以使用它。 (请注意,我刚刚链接到的在线vim帮助页面似乎有点过时了,所以它没有提到c
选项。)例如:
space:c
关于将:set lcs+=space:.
放在当前行的开头,我认为这是不可能的。所以我担心你运气不好,除非别人知道我不知道的伎俩。
最后,您可以使用>
选项放置内容而不是标签。我实际上喜欢使用几个Unicode字符:
tab:xy
2)您在这里寻找的是mapping。您应该注意“Shift + T”实际上只是大写T,因为移动一个字母键会在所有现代计算机上发送该字母的大写变体。所以你可以用你想做的事情:
:set lcs+=tab:•·
这将设置 T 来增加光标下的数字,这是 ^ a 的正常函数。
最后,关于映射alt修改的箭头键,这可能很棘手,因为它取决于您运行vim的平台,例如你是在Windows上运行gvim还是在Unix平台上运行终端。如果是gvim,您可以使用简单的nmap T <C-a>
代码:
<M-...>
但是在其他平台上,你需要弄清楚按下元修改箭头键时可能发送的转义序列,并映射它们。例如,当我在Windows上运行Cygwin vim时,我可以使用它:
nmap <M-Left> <C-w>h
nmap <M-Down> <C-w>j
nmap <M-Up> <C-w>k
nmap <M-Right> <C-w>l
您应该能够通过在缓冲区中输入插入模式(或命令行模式也可以)来计算键组合发送的转义序列,按 ^ v ,然后按下组合键。插入的字符是组合键发送的转义序列。
3)我之前从未使用过NERD树插件或尝试过映射控制空间,所以我不能说这个。也许你可以问一个关注这个问题的新问题。
答案 1 :(得分:0)
1)
如果你刚刚做了:
set listchars=...
这不起作用,因为您还必须打开列表选项:
set list
我误解了你的问题。你应该像建议的bgoldst一样使用trail:.
。
2)
首先,您必须决定重映射的工作方式,因为重映射是模态的,例如他们在某些模式下工作。例如,如果您希望<shift-t>
在正常模式下等于<C-a>
,则必须执行nnoremap
。
nnoremap T <C-a>
您也可以使用
为视觉,插入或命令模式执行此操作vnoremap
inoremap
cnoremap
推荐阅读:What is the difference between the remap, noremap, nnoremap and vnoremap mapping commands in vim?
3)
<C-space>
未映射到真正的ASCII字符,因此难以映射。但是,您仍然可以这样做。输入插入模式,然后键入
<C-v><C-space>
(ctrl + v然后ctrl + space)这将插入vim在按ctrl + space时看到的值。最有可能的是,您会看到^@
,例如一个空字节。如果是这种情况,您可以使用
nnoremap <NUL> :NERDTreeToggle<CR>