专栏名称: Python开发者
人生苦短,我用 Python。伯乐在线旗下账号「Python开发者」分享 Python 相关的技术文章、工具资源、精选课程、热点资讯等。
目录
相关文章推荐
Python中文社区  ·  超爆回报2682%!轻松复制这个简单暴利的量 ... ·  昨天  
Python爱好者社区  ·  刚刚!微信 DeepSeek ... ·  昨天  
Python爱好者社区  ·  Python接入DeepSeek,太强了! ·  2 天前  
Python开发者  ·  DeepSeek+软考,杀疯了?! ·  3 天前  
Python中文社区  ·  马斯克一条推特,股价狂飙?AI量化模型揭秘背 ... ·  4 天前  
51好读  ›  专栏  ›  Python开发者

提高 Vim 使用效率的 12 个技巧

Python开发者  · 公众号  · Python  · 2017-03-24 21:29

正文

(点击 上方蓝字 ,快速关注我们)


译文:伯乐在线专栏作者 - Alick

英文:sheerun

如有好文章投稿,请点击 → 这里了解详情

如需转载,发送「转载」二字查看说明


1. 使用空格键做为Leader(热键)


Leader是个非常有创意的设计,通过不同按键的顺序操作可以执行各种命令,而不需要通过组合键的方式,自从使用Leader之后我就很少使用ctrl-xxx的这种组合键。


长久以来我都是使用 , 做为Leader,直到我意识到我可以使用键盘上更加好用的捷按键:空格键( )。


let mapleader = "\ "


这个完全颠覆了我的 Vim 操作效率,我现在可以使用双手任何一个大拇指进行操作,同时其它手指可以保持在键盘的主键区。因为 Leader 相当容易使用,所以我就将各种常用的操作进行了 Leader 映射。


2. 将最常用的操作映射到 Leader 操作


我首先识别出最经常使用的操作,并将它们映射到 Leader 操作,我经常是这么使用的:


使用 o 创建一个新文件:


nnoremap o :CtrlP


使用 w 保存文件(比 :w 明显快得多):


nnoremap w :w


使用 p 与 y 进行剪切板拷贝、粘贴:


vmap Leader > y " + y

vmap Leader > d " + d

nmap Leader > p " + p

nmap Leader > P " + P

vmap Leader > p " + p

vmap Leader > P " + P


使用 进入 Vim 编辑模式:


nmap V


我强烈建议你找到最常用的操作并将其映射到 Leader 。


3. 使用区域扩展功能


为插件 terryma/vim-expand-region 做按键映射:


vmap v Plug > ( expand_region_expand )

vmap C - v > Plug > ( expand_region_shrink )


这样我就可以:


  • 按一次 v 选择一个字符。

  • 再按一次 v 自动扩展选择一个单词。

  • 再按一次 v 自动扩展选择一段代码。

  • 以此类推…

  • 回退上一次的选择操作。


虽然 vvv 貌似比 vp 的操作更慢,但使用这种方式时,我压根就不需要考虑当前要选择哪些以及应该使用哪个组合键进行操作。


这么一来 v 把诸如 viw, vaw, vi", va", vi(, va(, vi[, va[, vi{, va{, vip, vap, vit, vat, … 这些操作都给替代了,这下你懂了吧。


4. 找到文本查找操作工具


我一直都不喜欢 Vim 中的查找和替换操作,直到我在 Vim wiki 找到了以下的配置:


vnoremap silent > s // e C - r >=& selection == 'exclusive' ? '+1' : '' CR > CR >

: C - u > call histdel ( 'search' , - 1 ) Bar > let @ /= histget ( 'search' , - 1 ) CR > gv

omap s : normal vs CR >


这个直接替代了我常用的操作序列:


  • 使用 /something 查找

  • 使用 cs 替换第一个,然后按

  • 使用 n.n.n.n.n. 查找以及替换余下匹配项。


PS: 也可以考虑使用 Vim 7.4 提供的 cgn 命令。


5. 尝试更多更棒的键盘映射


我每天都在使用这几个快捷操作键,估计这已经帮我省出了几个月时间。


自动跳转到粘贴文本的最后


使用 ppppp 进行多行多次粘贴操作


vnoremap silent > y y `]

vnoremap silent > p p `]

nnoremap silent > p p `]


避免缓冲区的内容在粘贴后被覆盖


通过以下的配置可以避免缓冲区的内容被删除的文本内容所覆盖(放到~/.vimrc文件的最后)


" vp doesn ' t replace paste buffer

function ! RestoreRegister ()

let @ " = s : restore_reg

return ''

endfunction

function ! s : Repl ()

let s : restore_reg = @ "

return "p@=RestoreRegister() "

endfunction

vmap silent > expr > p sid > Repl ()


译注:这里没有Title,估计是作者漏了,加了个。


在文件中快速跳转


  • 通过 12 跳转到第 12 行 (12G 我觉得不称手)

  • 跳到行文件末尾。

  • 回到文件开始。


nnoremap CR > G

nnoremap BS > gg


快速选择粘贴的文本


noremap gV `[v`]


关闭无聊的窗口提示


map q: :q


6. 提高单元测试执行效率


我用 vim-vroom 插件以及相应的 tmux 配置来进行我的测试。


vim-room 缺省使用 r 执行测试,由于我已将 Leader 映射为 ,因此我通过 r 来运行测试工具。


由于测试在 tmux 的单独窗口运行,因此我可以边看测试进展共修订我的代码。


7. 使用 Ctrl-Z 返回 Vim


我经常要在shell下执行一些命令,我通过 Ctrl-Z 挂起 Vim ,在完成 shell 命令执行之后,通过 重新回到 Vim 。


使用 fg 退回 Vim 让我觉得难受,我只想通过 Ctrl-Z 在 Vim 与 Shell 之间切换,不过我没有找到解决方法,因此我写了个在 ZSH 下完美运行的脚本:


fancy - ctrl - z () {

if [[ $ #BUFFER -eq 0 ]]; then

BUFFER = "fg"

zle accept - line

else

zle push - input

zle clear - screen

fi

}

zle - N fancy - ctrl - z

bindkey '^Z' fancy - ctrl - z


如果你将上述代码放到 ~/.zshrc 文件中,你就可以在 shell 与 Vim 之间快速切换,你真值得去试试看。


8. 正确地配置 Tmux


在 OS X 下使用 Tmux 和 Vim 工具非常不方便,因为:


  • 系统的剪切板处理功能很弱

  • Vim 与 Tmux 的窗口切换操作不同

  • Tmux 下执行命令的热键不同 ( 使用 C-b )

  • 在 Tmux 中拷贝模式超难用


我花了非常多的时间去修正上述配置,具体可以见以下:


配置使用 作为 tmux 的热键


有些人习惯使用 作为热键,不过我是用这个热键回到行首,所以我这里就不细说了。使用 的方式会更好用,原因我一会再说:


unbind C - b

set - g prefix C - Space

bind Space send - prefix


使用 进入拷贝模式


设想一下,使用 就可以直接进入 Tmux 的拷贝模式有多方便。


bind Space copy - mode

bind C - Space copy - mode


使用 y 和 reattach-to-user-namespace (基于 OSX)


在使用系统的剪切板之前,你需要先执行 brew install reattach-to-user-namespace


bind - key - t vi - copy y

copy - pipe "reattach-to-user-namespace pbcopy"


使用 vim-tmux-navigator


你要使用 这几个快捷键在 vim 和 tmux 的各种窗口内快速切换。


同时我建议使用 l 和 j 的映射配置来进行 Tmux 窗口分割操作,这个绝对比用 % 和 | 来得快:


bind j split - window - v

bind C - j split - window - v

bind l split - window - h

bind C - l split - window - h


参看我的 tmux.conf 文件,这里有更多的干货。


9. 提高 Git 工程中 Ctrl-P 的执行效率


将下面的内容添加到你的 .vimrc 文件中(配置使用 来使用 git 或 silver 查找工具来自动补全):


let g : ctrlp_use_caching =







请到「今天看啥」查看全文