您的位置:首页 > 其它

Vim 日常使用 技巧总结

2018-05-31 18:16 405 查看
记录的比较乱,仅仅用于熟悉使用,如能给您带来一点点参考价值,这也许就是这个总结的意义所在了。

关于 Vim 的学习可以参考以下经典教程

VIM - 主帮助文件

鸟哥的 Linux 私房菜

Vim实用技巧(第2版)

这里我大多会把阅读 Vim 实用技巧的案例整理下,但这里绝对没有侵犯原著版权的意思,望悉知。

另外,这里有必要说明的一点问题就是,好多同学说,现在这么多大型 IDE 对各种语言支持的都那么好了,还有必要学习这个“老古董”么?我们可以回顾下 vi 或者 vim 的一些使用场景。

一般 unix、linux 环境必备文本编辑工具

个人对 vim 定制使之适应自己所从事行业

现在各大 IDE 都有对应 vim mode 编辑模式

暂时就想到这么多,有其他的再补充

我们可以对上述几种情况做上下简单的分析。

第一种情况,这是使用unix,linux 服务器环境编辑自带编辑工具,理所当然学握好 vi 编辑技巧是很重要的。

第二种,这个对于一个已经熟悉掌握 vi 编辑技巧的人来说,有一个自己定制的 vim ,编辑开发起来我想也是得心应手了。

第三种,这个我个人认为更适合那些不太熟悉 vi 编辑技巧并且平时开发工作环境在windows操作系统环境,IDE 提供的对个人所从事的编辑语言的支持已经很好,但平时我们免不了点击更多的鼠标来操作,这样我们可以使用 IDE 提供的 vim mode 下的插件来解决这些“多余”的鼠标操作,使我们的开发效率最大化。

当然,最终的选择权还是在你自己心中?不是么?对于我个人来说保持学习是一个我认为值得坚持的好习惯。

一切华丽的根本都是丛基础开始,所以打好基础是重中之重。

-- NORMAL -- 模式

操作用途说明
<Esc>返回 normal 模式
<C - [>返回normal 模式
.重复上次修改
x删除光标所在字符如执行完 x 删除操作,按 . 再次执行 x 操作
dd删除当前行
>G增加丛当前行到文档末尾处的缩进层级参见:practical+vim 第1章 技巧1
>>增加当前行缩进
$移动光标到行尾
i在光标所在字符前开始插入
a在光标所在字符后开始插入
$a;<Esc>在行尾添加分号
0移动光标到行首,空格也算
<S-^>移动光标到当前行,行首,不包含空格
b移动光标到当前单词首部
:n跳转到指定的第 n
ctrl+i跳转到跳转表里第 N 个较新的项目简单来说就是往你编辑过的地方回跳
ctrl+o跳转到跳转表里第 N 个较旧的项目简单来说就是一直向你最近编辑的位置跳转
f{char}查找下一处指定字符出现的位置参见 :h f
;; 命令会重复查找上次 f 命令所查找的字符参见 practical+vim 第1章 技巧3
*匹配当前光标所在单词将光标移动到单词上,按 * 键,光标跳转到下一匹配单词并且高亮所有单词匹配项
:%s/search/replacement/g全局替换
<CR>另起一行,依然是normal mode
{start} db x反向删除单词假设光标在单词最后位置
{start} b dw正向删除单词先移动光标到单词开始位置,然后整个删除单词
d2w丛当前光标向后删除两个单词,包含当前字符
2dw丛当前光标向后删除两个单词,包含当前字符
dw丛当前光标向后删除单个单词可以结合 . 来使用
{start} d aw删除整个单词 delete a wordtext object 参见 :h aw
[count]<C-a>对数字执行[count]次加操作如果光标没有在数字上,则正向查找数字
[count]<C-x>对数字执行[count]次减操作如果光标没有在数字上,则正向查找数字
<C-v>进入 Visual Block 模式
h向左移动光标
j向下移动光标
k向上移动光标
l向右移动光标
zz将当前光标所在行重新定位到屏幕中间位置
<C-f>向下滚动整屏
<C-b>向上滚动整屏
<C-d>向下滚动半屏
<C-u>向上滚动半屏
<S-a>Visual Block 模式下在光标前面位置插入内容
<S-i>Visual Block 模式下在光标后面位置插入内容
v进入Visual 模式可以用这个实现, h j k l,选中文本,y复制到寄存器,p粘贴文本
<C-r>[操作符]寄存器操作如 <C-r>p 会粘贴我们寄存器是复制的文本信息
<C-r>反撤消
viw选中当前单词

按单词移动

相信你已经习惯了h,j,k,l的左下上右移动光标,但是如果在一行中这么多次按hjkl也是很手疼的一件事儿。

命令光标动作
w正向移动到下一单词的开头
b反向移动到当前单词/上一单词的开头
e正向移动当前单词/下一单词的结尾
ge反向移动到上一单词的结尾

操作符 + 动作命令 = 操作

操作符用途
c修改
d删除
y复制到寄存器
g~反转大小写
gu转换为小写
gU转换为大写
>增加缩进
<减小缩进
=自动缩进
!使用外部程序过滤{motion}所跨越的行
参见 :h operator

gU 也是操作符 参见 :h gU

操作用途说明
gUaw把当前单词转换成大写形式
gUap把整段文字转换为大写
gUgU将当前行转换为大写
gUU将当前行转换为大写
dap删除整个段落

复合命令(参见 practical+vim 第1章 技巧2)

操作用途说明(等效长命令)
A移动当前行光标至行尾并进入插入模式$a
C修改当前行上光标后面的部分,进入插入模式c$
s删除光标所在字符并开始插入cl
S删除光标所在行并开始插入^C
I在光标所在行的行首开始插入 如果行首有空格则在空格之后插入^i
o在光标所在行的下面另起一新行插入A<CR>
O在光标所在行的上面另起一行开始插入ko

可重复操作及回退(参见 practical+vim 第1章 技巧4)

目的操作重复回退
做出一个修改{edut}.u
在行内查找下一指定字符f{char}/t{char};,
在行内查找上一指定字符F{char}/T{char};,
在文档中查找下一处匹配项/patternnN
在文档中查找上一处匹配项?patternnN
执行替换:s/target/replacement&u
执行一系列修改qx{changes}q@xu
这里的{char} 或者 pattern 可以是我们手动输入的内容,也可以是我们复制到寄存器中的内容,比如我们用下面的搜索模式。

/pattern
假如我想用寄存器中的内容做为搜索条件,又该怎么来操作呢?我们可以这样来取得寄存器中的内容。
/<C-r>0

插入-普通模式

在此模式中允许我们执行一个普通命令,执行完后,可以又马上返回插入模式。

<C-o>zz  这个命令用于我们重绘屏幕,然后回到插入模式,不会打断我们打字。

-- INSERT -- 模式

操作用途说明
:w保存当前文件修改
<C-r>+丛外部复制粘贴到 vim 中
<C-h>删除前一个字符(同空格键)
<C-w>删除前一个单词
<C-u>删至行首
<C-r>=6*35<CR>插入模式中做运算210

返回普通模式

按键用途
<Esc>切换到普通模式
<C-[>切换到普通模式
<C-o>切换到插入-普通模式

替换模式

R 进入替换模式

单次版本的替换模式

r{char} 允许覆盖一个字符,之后马上回到普通模式

虚拟替换模式

gR 命令触发 ,建议要可能的情况下尽量使用虚拟替换模式

单次版本的替换模式

gr{char} 允许覆盖一个字符,之后马上回到普通模式

可视模式

3种可视模式,分别用于操作字符文本、行文本和块文本。**.**命令面向行操作使用较多。

命令用途
v激活面向字符的可视模式
V激活面向行的可视模式
<C-r>激活面向列块的可视模式
gv重选上次的高亮选区
x删除列
选区操作可以结合 h/j/k/l 和 w/b/e/ge 等命令来操作,如果选区选择有误可按 o 来重新选择选区活动端。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: