Vim 技巧和建议
技巧和建议
显示行号
使用:set number
来显示行号。默认显示绝对行号,可用:set relativenumber
开启相对行号。
使用:_行号_
or _行号_gg
跳转到指定行号。跳转都记录在一个跳转列表中,更多细节参考:h jump-motions
。
拼写检查
Vim有拼写检查的功能,用下面的命令开启:
set spell
Vim默认只安装了英语字典。其他的字典可在[官方软件仓库][17]通过搜索vim-spell
而寻得。检查可用语言包:
# pacman -Ss vim-spell
额外的字典可以从[Vim's FTP archive][18]获取。把下载的字典文件存入~/.vim/spell/
,并用 :setlocal spell spelllang=_en_us_
(将_en_us_
换成所需的字典的名称)开启。
行为 | 快捷键 |
---|---|
下一个拼写错误 | ]s |
上一个拼写错误 | [s |
拼写纠正建议 | z= |
将单词添加到用户正确字典 | zg |
将单词添加到内部正确字典 | zG |
将单词添加到用户错误字典 | zw |
将单词添加到内部正确字典 | zW |
重新进行拼写检查 | :spellr |
小贴士:
如果需要针对两种语言进行拼写检察(例如英语与德语),在
~/.vimrc
或/etc/vimrc
中添加set spelllang=_en,de_
并重启Vim即可。使用用于进行文件类型检测的FileType插件和自建规则,可以对任意文件类型开启拼写检查。例如,要开启对扩展名为
.txt
的文件的拼写检查,创建文件/usr/share/vim/vimfiles/ftdetect/plaintext.vim
,添加内容autocmd BufRead,BufNewFile *.txt setfiletype plaintext
,然后在~/.vimrc
或/etc/vimrc
添加autocmd FileType plaintext setlocal spell spelllang=en_us
,重启vim即可。- 如果想只对LaTeX(或TeX)文档起用拼写检查,在
~/.vimrc
或/etc/vimrc
添加autocmd FileType **tex** setlocal spell spelllang=_en_us_
,重启Vim即可。至于非英语语言,替换上述语句中的en_us
为相应语言代码即可。
记录光标位置
Vim可以记录上次打开某一文件时的光标位置,并在下次打开同一文件时将光标移动到该位置。要开启该功能,在配置文件~/.vimrc
中加入以下内容:
augroup resCur
autocmd!
autocmd BufReadPost * call setpos(".", getpos("'\""))
augroup END
另见:[Vim Wiki上的相关内容][19]。
用 vim 替代 vi
创建一个alias,如下:
alias vi=vim
或者,如果你想输入sudo vi
并得到vim
, 安装vi-vim-symlinkAUR,它将移除vi
并用一个符号链接vim
代替。
DOS/Windows回车问题
打开MS-DOS或Windows下创建的文本文件时,经常会在每行行末出现一个^M
。这是因为Linux使用Unix风格的换行,用一个换行符(LF)来表示一行的结束,但在Windows、MS-DOS中使用一个回车符(CR)接一个换行符(LF)来表示,因而回车符就显示为^M
。
可使用下面的命令删除文件中的回车符:
:%s/^M//g
注意,^
代表控制字符。输入^M
的方法是按下Ctrl+v,Ctrl+m
。
另一个解决方法是,安装 dos2unix,然后执行 dos2unix <文件名>
。
gVim窗口底部的空格
如果窗口管理器设置为忽略窗口大小渲染窗口,gVim会将空白区域填充为GTK主题背景色,看起来会比较难看。
解决方案是调整gVim在窗口底部保留的空间大小。将下面的代码加入 ~/.vimrc
中:
set guiheadroom=0
注意:如果将其设为0,将无法看到底部的水平滚动条。