浅谈算法竞赛中 vim 的使用
众所周知, vim 写代码很快, 但 vim 编辑器本身没有常见IDE那样的多功能性(即使可以, 但很折腾). 更有性价比的方式是 IDE + vim 插件的组合.
以我所知, vscode, JB全家桶(Pycharm, IDEA, Clion), Sublime Text 都支持 vim 插件, 但没有原生vim 的扩展性强, 若仅仅看重 vim 的写代码快捷性, 显然是足够了.
下面来谈谈 vim 常用的三种模式, NORMAL(N) ,INSERT(I), VISUAL(V) 中常用的按键组合
更全面的请查阅 菜鸟教程 或此篇博客
NORMAL 模式
习惯 normal 模式就学会了 vim 的一大半
-
基础光标移动,
h左移,j下移,k上移,l右移xh, 其中 x 代表数字,xh则代表向左移动 x 格, 类似xj代表向下移动 x 行, 可以用来快速跳行和列0光标指向行首,$光标指向行末, 如果想要直接在行末编辑请看后续gg移动到文本开头,G移动到文本结尾行w跳到下一个"单词"开头处(不算常用)
-
替换
r对当前光标自负进行替换, 例如输入rc可将当前下标字符替换成 c 字母
-
剪切(删除)
dd对当前行进行剪切(删除),dxd其中 x 是一个数字, 对下面 x 行(包括当前行) 进行剪切(删除)x对当前光标字符进行剪切(删除), 执行后依然在N模式ggdG删除(剪切) 全文
-
复制/粘贴
y对当前下标字符复制,yy对当前行进行复制p粘贴
-
撤销/重做
u撤销,Ctrl + R重做, 两者逻辑根据实际情况有所变化, 大部分情况不会出差错
-
J快速将下一行字符移动到当前行行末
NORMAL 模式快速进入 INSERT 模式 (useful)
A光标直接指向行末开始编辑 (是大写 A )o在下一行插入空白行并在下一行开头开始编辑,O是在上一行同理s将当前光标字符剪切(删除), 执行之后进入I模式,S是将当前行剪切(删除)
INSERT模式
-
通常情况下, 在
NORMAL模式下按i或a进入, 关标位置的转换位置不同 -
其他与普通文本编辑器功能无差别
VISUAL模式
- 在
N模式下按v进入, 然后对光标进行移动, 通常用于对代码文本进行选中
功能
- 代码缩进, 选中目标代码行后, 按
shift + < or >实现 左/右缩进, 缩进完以后需要重新按v从N模式进入 V 模式, 稍微有点鸡肋... - 当然可以在选中代码后, 使用
N模式下对应的功能按键进行操作, 比如d, x进行剪切,y进行复制, 粘贴格式与N模式下的复制粘贴格式有所不同, 自行体会 gg + v + G + $ + (系统级复制 ctrl + c)可以将代码全部复制(好吧我承认I模式ctrl + a也可以)

浙公网安备 33010602011771号