VIM 操作记录

@(linux 编程)[vim, 技能, VIM, 开发技能, 工具使用]

使用vim 大概有2年,但是感觉一直停留在刚入门。这几天幡然醒悟自己的开发环境和开发技能如此落后,可恨的是还停滞不前许久,因此决定发愤图强,改变他。
--- lcd
vim 神之编辑器 哈哈哈

本文记录, vim 入门后使用进阶


说明 :

命令格式 xxx表示在Nornal 模式下键盘直接输入
命令格式 : xxx表示在命令行模式下输入
命令格式 C_x表示键盘 ctrl + x

日常操作

个人感觉满足90%的需求

Nornal 模式 下光标快速移动

操作 效果
0 到行首
^ 到本行第一个非空位置
$ 到行尾
g_ 到本行最后一个非空位置
* 当前单词下一个位置 (n向下继续查找)
# 当前单词上一个位置 (N向上继续查找)
% 移动到当前括号匹配的位置
:/xxx 向下查找xxx 词(?向上查找)
NG 到第N行
gg 到第一行
G 到最后一个行
' ’ (两个单引号) 上一个位置
w 按单词跳动 , W (按blank划分跳动)
e 单词尾 , E (按blank划分跳动)
fx 到当前行下一个为x的字符
tx 到当前行 x 前的一个字符

进入Insert 模式 快速开始输入

操作 效果
i 在光标前面插入
I 行首非空字符前插入
a 在光标后面插入
A 行末非空字符后插入
o 在下一行首插入
O 在上一行首插入
cw 删除当前单词,进入插入模式

拷贝黏贴那几个命令

操作 效果
p 黏贴
yy 复制当前行
yw 复制光标到单词结束
y^ 复制光标到最前一个非空字符
y$ 复制光标到最后一个非空字符
2yy 复制当前行开始的2行
2y 复制当前行和后续2行

其他组合操作类似

操作撤销和恢复

  • u 撤销操作
  • C_r 恢复操作

文件打开保存退出切换

操作 效果
: e xx 打开文件
: saveas xx 另存为
: E 查看目录
: ls 查看缓冲区,打开的文件
: buffer x : ls 后可以直接打开对应的文件 编号x
: bn/ : bp vim xx xx 多个文件的时候,切换

操作的快速重复

  • 快速重复操作 : 小数点 .
  • N[cmd] : 执行 cmd N 次(p, dd, x..)

区域选择

选择指定符号 (", ', ), }, ]) 区域内的内容
举个例子 : [ a + cda [daff ] ], 当前光标在 [daff] 范围

操作 选中
v i ] [ a + cda [daff] ]
v a ] [ a + cda [daff ] ] (包括符号)
v 2i ] [ a + cda [daff]]
v 2a ] [ a + cda [daff ]]

** 数字 表示向外第几层,默认1,当前层**

块操作

C_v 进入块操作-- 局部。

  • 整块注释
void fun(void)
{
    printf("fun %s", __FUN__);
}
        
//void fun(void)
//{
//printf("fun %s", __FUN__);
//}

光标定位void 位前,按 C_v, 然后光标向下拖动(hjkl..),选择注释范围,大写I进入插入模式,输入//,
ESC退出,所有行都会被注释。

  • 整块缩进
    同上,选中块列首, C_> 或者 C_< 进行缩进(选中后输入数字可以设定缩进个数)
    V/v 块操作— 整行选择
    键盘v, 选中操作的块区域。
    • = : 代码自动缩进(多层次)
    • J : 选中区域连接为一行

宏录制

st=>start: qa : q开始记录,a是保存的寄存器
end=>end: end
op=>operation: 一系列操作, 诸如yy,ddd
opq=>operation: q : 停止记录
opu=>operation: @a : 调用录制的宏 
opu2=>operation: @@ 调用最近录制的宏
opu3=>operation: 3@a 执行a中保存的宏3次
st->op->opq->opu->opu2->opu3->end

分屏操作

  • 终端打开命令
$vim -On file file2 #大写O垂直分屏打开文件
$vim -on file file2 #小写水平打开
# n 表示分屏数,直接n等于文件个数, 如果n小于文件,按顺序打开前面的n个,如果大于,打开空编辑页面
  • 分屏快捷操作
    C_w + hjkl 或者方向键移动光标
    C_w + HJKL 移动分屏 (太多分频使用容易混乱)
    C_w + c 关闭当前分屏
    C_w + q 关闭当前分屏,如果最后一个,退出vim

  • 编辑器命令行分屏设置 : :split / :vsplit + 文件

  • 打开分屏后,可以设置同步滚动 : :set scb

  • 关闭同步滚动 : :set noscb

标签定位

  • 打标签
    光标移动到需要标记的位置, 键盘 mx
    (x 代表 26 个字母,指代存储位置)*

  • 跳到标签位置
    键盘 ````x ```
    (`是tab上的那个点)*
    :marks 得知目前所有标签的列表。

  • 标签作用域
    小写字母,作用当前文档
    大写字母,作用编辑的各个文档之间 (同一个buffer)
    数字,可作用前面十次编辑的文档之间。

数字的用法比较特殊,'0 是回到前一次编辑文档中离开前的最后位置,'1 则是回到前第二次编辑文档最后离开的位置,依此类推。该功能是vim自动标记,請 :h viminfo-file-marks。viminfo 關掉,就沒這個功能了! 所谓前次指的是前次启动的 vim。


没插件也能IDE ? --- 可以可以

分屏浏览目录打开

操作 效果
:He 在下面分屏打开目录 (:He!在上面))
:Ve 在左边分屏打开目录 (:Ve!在右边)
1465059837288.png

Tab 分页浏览目录打开

操作 效果
:Te 在新页打开目录
:tabs 查看打开的情况
gt 跳到下一页 (T上一页)
x gt 直接跳到指定页 i
:tabclose i 关闭i 页,没指定关闭当前
:bufdo tab split 把buffer中的文件全部转为tab

vim启动直接以页的形式打开文件

vim -p xx.c aa.c 
1465059909964.png

保存打开几个tab 或者设置各种参数的会话

操作 效果
: mksession path_name.vim 保存当前建立的会话窗口
vim -S path_name.vim 打开保存的会话
: qa / : wqa 退出当前会

关键字补全快捷键

以下,在Insert 模式进行操作

单词补全

输入单词一部分后,C_n, 自动补全一个。如果这个补全对象不对,C_p,回退补全,方向键选择实际需要的选项。

其他补全

C_X 的前提下, 如下快捷键对应功能 :

输入 功能
C_D 宏定义补全
C_L 行补全
C_F 文件名补全(补全目录下文件的名称)
C_I 关键字补全
C_V 表达式补全
C_] Tag 补全
1465060071930.png

quickfix 功能

编译出错调试

当前目录下包含makefile , 在vim 命令中执行:make,如果编译出现错误,执行结束后回车,在命令行中执行: cw打开窗口查看信息。: cl 可以直接列出所有错误信息; : cp跳到上一个错误, : cn跳到下一个错误。

信息查找

在vim 下查找 XXX 宏在哪里出现,命令行下输入 :

: grep -r --include="*.[ch]" XXX  ./

命令递归查找当前目录下的 *.c 和 *.h 文件中包含XXX宏。查找后,通过命令 :cw 查看。

快速打开光标所指文件

  • Normal 模式下, 键盘gf
  • 退回, C_o
  • 打开文件存在buffer中,参看buffer使用。

其他加速操作

操作 效果
dtx 删除内容直到遇到x
ga 查看光标处的ASSII码
g8 查看光标处的UTF-8码
guu(Vu) 当前行全部变为小写
gUU(VU) 当前行全部变为大写
:r ![cmd] 执行shell 命令并把结果黏贴到文本
  • 写一段python代码,选中后,执行 : !python,结果黏贴在文本,替换了源代码

参考

酷壳--简明 Vim 练级攻略
无插件Vim编程技巧
大家来学vim

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容

  • 曾经在思科的工厂测试系统`KlemTest` (`SUSE`命令行模式)中使用`VI`/`VIM`超过2年半,现在...
    戈多在地狱阅读 1,741评论 1 13
  • vim 选择文本,删除,复制,粘贴 文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下: v 从...
    壹首簡單的歌阅读 868评论 0 7
  • 1. vim 选择文本,删除,复制,粘贴 文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下:v ...
    路痴千行阅读 3,217评论 0 0
  • 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim 在命令...
    im蚂蚁阅读 30,616评论 3 48
  • 叩问:有多少母亲成为教育家? ——母亲为什么没有成为教育家? 【母亲教育学...
    田园泥土香教育阅读 5,219评论 7 27