admin管理员组文章数量:1026989
输入: /abc 查询 abc 开头的单词
之后,所以以abc开头的单词都会标记高亮
输入 n 会查找下一个结果
/pattern 向下搜索 n继续搜索下一个 ?pattern 向上搜索 #继续搜索上一个 1. 暂时显示/取消行号: 使用Vim打开文件后,在Normal模式下输入 :set number(或 :set nu)显示行号 :set nonumber (或 :set nonu)取消行号 2. 永久显示行号 查找Vim设定文件 sudo find / -name vimrc 修改Vim设定文件 /etc/vimrc ,末尾添加 set number (或 set nu) 保存即可。
如果设置完成后,发现功能没有起作用,检查一下系统下是否安装了vim-enhanced包,查询命令为: $rpm -q vim-enhanced
跳跃指令 (jumps)
跳跃指令类似于游览器中的<前进><后退>按钮
u -> undo
1. 折叠方式 使用时,用:set fdm=marker 命令来设置成marker折叠方式(fdm是foldmethod的缩写)。 2. 折叠命令 当使用marker方式时,需要用标计来标识代码的折叠,系统默认是{{{和}}},最好不要改动之:) 关于vim的代码折叠,小弟也是初学,仅做参考。
* zo 将当前折叠打开
* vim file1 file2 多个文件调入缓冲
* :tabnew 打开新标签页.
* :e <file> 打开文件.
* esc 切换命令模式 (距离太遥远了,用 Ctrl+C 代替吧).
缩进
* :marks 查看所有书签, 输入 “:<num>” 可跳转.
* :! ctags -R . 生成 ctags 文件.
* ! <command> 执行命令.
自动补全 Ctrl+X Ctrl+L整行补全 Ctrl+X Ctrl+N 根据当前文件里关键字补全 Ctrl+X Ctrl+K 根据字典补全 Ctrl+X Ctrl+T 根据同义词字典补全 Ctrl+X Ctrl+I 根据头文件内关键字补全 Ctrl+X Ctrl+] 根据标签补全 Ctrl+X Ctrl+F 补全文件名 Ctrl+X Ctrl+D 补全宏定义 Ctrl+X Ctrl+V 补全vim命令 Ctrl+X Ctrl+U 用户自定义补全方式 Ctrl+X Ctrl+S 拼写建议
分屏启动Vim 注释: n是数字,表示分成几个屏。 vim -On file1 file2 … 使用大写的O参数来垂直分屏。 vim -on file1 file2 … 使用小写的o参数来水平分屏。 Ctrl+W c 关闭分屏 关闭当前窗口。 Ctrl+W q 关闭当前窗口,如果只剩最后一个了,则退出Vim 分屏 Ctrl+W s 上下分割当前打开的文件。 :sp filename 上下分割,并打开一个新的文件。 Ctrl+W v 左右分割当前打开的文件。 :vsp filename 左右分割,并打开一个新的文件。 移动光标 Vi中的光标键是h, j, k, l,要在各个屏间切换,只需要先按一下Ctrl+W Ctrl+W l 把光标移到右边的屏。 Ctrl+W h 把光标移到左边的屏中。 Ctrl+W k 把光标移到上边的屏中。 Ctrl+W j 把光标移到下边的屏中。 Ctrl+W w 把光标移到下一个的屏中。. 移动分屏 这个功能还是使用了Vim的光标键,只不过都是大写。当然了,如果你的分屏很乱很复杂的话,这个功能可能会出现一些非常奇怪的症状。 Ctrl+W L 向右移动。 Ctrl+W H 向左移动 Ctrl+W K 向上移动 Ctrl+W J 向下移动 屏幕尺寸 下面是改变尺寸的一些操作,主要是高度,对于宽度你可以使用Ctrl+W <或是>,但这可能需要最新的版本才支持。 Ctrl+W = 让所有的屏都有一样的高度。 Ctrl+W + 增加高度。 Ctrl+W – 减少高度。 ctrl+w > 向右扩展 ctrl+w < 向左扩展
diff 模式 参考 比较 A , B 文件, vim – d A B 或者这样 或先打开文件 A,然后 :vsp(全名vsplit) 打开 B,然后输入命令 :diffthis 或 vimdiff FILE_LEFT FILE_RIGHT ]c 跳转到下一差异点 [c 反向跳转
上下文折叠 参考 默认情况下,vimdiff会将文件中不同之处上下6行之外的相同文本折叠隐藏,可通过 :set diffopt=context:3 修改显示的上下文行数。 zo 打开折叠 zc 关闭折叠 文件合并 dp 将当前窗口光标位置处的内容复制到另一窗口 do 将另一窗口光标位置处的内容复制到当前窗口 diffupdate 重新比较两个文件,如果手动修改文件的话有时不会自动同步
gg=G 源码格式化 :e! 强行重新编辑 键盘移动 (Move)一切都从键盘的移动 跳跃指令 (jumps)跳跃指令类似于游览器中的<前进><后退>按钮 重做/回复u -> undo 视觉模式 (visual)v -> 进入视觉模式 打印 (print):hardcopy -> 打印vim中的内容 (print text) 将文件写成网页格式 (html):source $VIMRUNTIME/syntax/2html.vim -> change current open file to html 格式 (format)dos/windows跟unix/linux对于文件的结束是不一样的。vim可以直接设定/更改格式 :set ff=unix -> 设定文件成unix格式 (set file in unix format) 加密 (encryption)vim可以给文件加密码 vim 语法显示 (syntax):syntax enable -> 打开语法的颜色显示 (turn on syntax color) 输入特殊字符 (special character)CTRL-v 编码就可以了 二进 制文件 (binary file)vim可以显示,编辑2进位文件 vim -b datafile :%!xxd -> 更改当前文件显示为2进位 (change display to binary) 自动完成 (auto-completion)vim本身有自动完成功能(这里不是说ctag,而是vim内建的) 自动备份 (backup)vim可以帮你自动备份文件(储存的时候,之前的文件备份出来) 自动备份有个问题就是,如果你多次储存一个文件,那么这个你的备份文件会被不断覆盖,你只能有最后一次存文件之前的那个备份。没关系,vim还提 供了patchmode,这个会把你第一次的原始文件备份下来,不会改动 开启,保存与退出 (save & exit):w -> 保存文件 (write file) 编辑指令 (edit)a -> 在光表后插入 (append after cursor) 复制与粘贴 (copy & paste)y -> 复制 (yank line) 书签 (Mark)书签是vim中非常强大的一个功能,书签分为文件书签跟全局书签。文件书签是你标记文件中的不同位置,然后可以在文件内快速跳转到你想要的位置。 而全局书签是标记不同文件中的位置。也就是说你可以在不同的文件中快速跳转 m{a-zA-Z} -> 保存书签,小写的是文件书签,可以用(a-z)中的任何字母标记。大写的是全局 书签,用大写的(A-Z)中任意字母标记。(mark position as bookmark. when lower, only stay in file. when upper, stay in global) 标志 (tag):ta -> 跳转入标志 (jump to tag) 运行外部命令 (using an external program):! -> 直接运行shell中的一个外部命令 (call any external program) :w !wc -> 将vim的内容交给外部指令来处理。这里让wc来处理vim的内容 (send vim’s file to external command. this will send the current file to wc command) 多个文件的编辑 (edit multifiles)vim可以编辑多个文件,例如 :next -> 编辑下一个文件 (next file in buffer) vim中很多东西可以用简称来写,就不用打字那么麻烦了,例如 :edit=:e, :next=:n 这样. 分屏 (split)vim提供了分屏功能(跟screen里面的split一样) 今天有人说不会看diff,其实vim也可以用来看diff,这个也是属于分屏的部分,这里也写一下。 vimdiff a.txt b.txt 如果直接给 -d选项是一样的 vim -d a.txt b.txt TAB除了split之外, vim还可以用 tab :tab split filename -> 这个就用tab的方式来显示多个文件 (use tab to display buffers) 关闭所有的tab可以使用qall的指令。另外让vim在启动的时候就自动用tabnew的方式来开启多个文件,可以用alias linux: 添加 alias vim=’vim -p’ 到 ~/.bashrc windows: 自己写个vim.bat的文件,然后放在path中,文件内容: @echo off vim -p %* 当需要更改多个tab中的文件的时候,可以用 :tabdo 这个指令 这个就相当于 loop 到你的所有的 tab 中然后运行指令。 例如有5个文件都在tab里面,需要更改一个变量名称:abc 到 def, 就可以用 :tabdo %s/abc/def/g 这样所有的5个tab里面的abc就都变成def了
折叠 (folding)vim的折叠功能。。。我记得应该是6版出来的时候才推出的吧。这个对于写程序的人来说,非常有用。 保存 (save view)对于vim来说,如果你设定了折叠,但是退出文件,不管是否保持文件,折叠部分会自动消失的。这样来说非常不方便。所以vim给你方法去保存折 叠,标签,书签等等记录。最厉害的是,vim对于每个文件可以保存最多10个view,也就是说你可以对同一个文件有10种不同的标记方法,根据你的需 要,这些东西都会保存下来。 常用指令 (commands):set ic ->设定为搜索时不区分大小 写 (search case insensitive) 记录指令 (record)q{a-z} -> 在某个寄存中记录指令 (record typed char into register) 搜索 (search)vim超级强大的一个功能就是搜索跟替换了。要是熟悉正表达(regular expressions)这个搜索跟后面的替换将会是无敌利器(支持RE的编辑器不多吧) 从简单的说起 下面直接用几个例子说话 特殊字符前面加^就可以 (for special character, user “^” at the start of range) 更多例子,例如搜索车牌规则,假设车牌是 “1MGU103” 也就是说,第一个是数字,3个大写字幕,3个数字的格式。那么我们可以直接搜索所有符合这个规则的字符 /\d\u\u\u\d\d\d 另外一个方法,是直接定义几位数字(不然要是30位,难道打30个\u去?) /\d\u\{3}\d\{3} 也可以用范围来搜索 (Using [] ranges) 用到范围搜索,列出一些范围(range) /[a-z] \d digit [0-9] :help /[] –> 特殊的定义的,可以在vim中用用help来看 (everything about special) 替换 (string substitute) – RX替换其实跟搜索是一样的。只不过替换是2个值,一个是你搜索的东西,一个是搜索到之后要替换的 string substitute (use rx) %s/abc/def/ -> 替换abc到def (substitute abc to def) 结合上面的搜索正表达式,这个替换功能。。。就十分只强大。linux中很多地方都是用正表达来做事请的,所以学会了受益无穷。 全局 (global)这个不知道怎么翻译,反正vim是叫做global,可以对搜索到的东西执行一些vim的命令。我也是2-3个星期前因为读log中一些特殊的东 西,才学会用的。 (find the match pater and execute a command) global具体自行方法是 g/pattern/command 信息过滤 (filter)vim又一强大功能 ! -> 用!就是告诉vim,执行过滤流程 (tell vim to performing a filter operation) 正式指令开始,这里用sort来做例子: 如果觉得!这样的方法5G这样的方法用起来别扭(我是这么觉得),可以用标准的命令模式来做 |
输入: /abc 查询 abc 开头的单词
之后,所以以abc开头的单词都会标记高亮
输入 n 会查找下一个结果
/pattern 向下搜索 n继续搜索下一个 ?pattern 向上搜索 #继续搜索上一个 1. 暂时显示/取消行号: 使用Vim打开文件后,在Normal模式下输入 :set number(或 :set nu)显示行号 :set nonumber (或 :set nonu)取消行号 2. 永久显示行号 查找Vim设定文件 sudo find / -name vimrc 修改Vim设定文件 /etc/vimrc ,末尾添加 set number (或 set nu) 保存即可。
如果设置完成后,发现功能没有起作用,检查一下系统下是否安装了vim-enhanced包,查询命令为: $rpm -q vim-enhanced
跳跃指令 (jumps)
跳跃指令类似于游览器中的<前进><后退>按钮
u -> undo
1. 折叠方式 使用时,用:set fdm=marker 命令来设置成marker折叠方式(fdm是foldmethod的缩写)。 2. 折叠命令 当使用marker方式时,需要用标计来标识代码的折叠,系统默认是{{{和}}},最好不要改动之:) 关于vim的代码折叠,小弟也是初学,仅做参考。
* zo 将当前折叠打开
* vim file1 file2 多个文件调入缓冲
* :tabnew 打开新标签页.
* :e <file> 打开文件.
* esc 切换命令模式 (距离太遥远了,用 Ctrl+C 代替吧).
缩进
* :marks 查看所有书签, 输入 “:<num>” 可跳转.
* :! ctags -R . 生成 ctags 文件.
* ! <command> 执行命令.
自动补全 Ctrl+X Ctrl+L整行补全 Ctrl+X Ctrl+N 根据当前文件里关键字补全 Ctrl+X Ctrl+K 根据字典补全 Ctrl+X Ctrl+T 根据同义词字典补全 Ctrl+X Ctrl+I 根据头文件内关键字补全 Ctrl+X Ctrl+] 根据标签补全 Ctrl+X Ctrl+F 补全文件名 Ctrl+X Ctrl+D 补全宏定义 Ctrl+X Ctrl+V 补全vim命令 Ctrl+X Ctrl+U 用户自定义补全方式 Ctrl+X Ctrl+S 拼写建议
分屏启动Vim 注释: n是数字,表示分成几个屏。 vim -On file1 file2 … 使用大写的O参数来垂直分屏。 vim -on file1 file2 … 使用小写的o参数来水平分屏。 Ctrl+W c 关闭分屏 关闭当前窗口。 Ctrl+W q 关闭当前窗口,如果只剩最后一个了,则退出Vim 分屏 Ctrl+W s 上下分割当前打开的文件。 :sp filename 上下分割,并打开一个新的文件。 Ctrl+W v 左右分割当前打开的文件。 :vsp filename 左右分割,并打开一个新的文件。 移动光标 Vi中的光标键是h, j, k, l,要在各个屏间切换,只需要先按一下Ctrl+W Ctrl+W l 把光标移到右边的屏。 Ctrl+W h 把光标移到左边的屏中。 Ctrl+W k 把光标移到上边的屏中。 Ctrl+W j 把光标移到下边的屏中。 Ctrl+W w 把光标移到下一个的屏中。. 移动分屏 这个功能还是使用了Vim的光标键,只不过都是大写。当然了,如果你的分屏很乱很复杂的话,这个功能可能会出现一些非常奇怪的症状。 Ctrl+W L 向右移动。 Ctrl+W H 向左移动 Ctrl+W K 向上移动 Ctrl+W J 向下移动 屏幕尺寸 下面是改变尺寸的一些操作,主要是高度,对于宽度你可以使用Ctrl+W <或是>,但这可能需要最新的版本才支持。 Ctrl+W = 让所有的屏都有一样的高度。 Ctrl+W + 增加高度。 Ctrl+W – 减少高度。 ctrl+w > 向右扩展 ctrl+w < 向左扩展
diff 模式 参考 比较 A , B 文件, vim – d A B 或者这样 或先打开文件 A,然后 :vsp(全名vsplit) 打开 B,然后输入命令 :diffthis 或 vimdiff FILE_LEFT FILE_RIGHT ]c 跳转到下一差异点 [c 反向跳转
上下文折叠 参考 默认情况下,vimdiff会将文件中不同之处上下6行之外的相同文本折叠隐藏,可通过 :set diffopt=context:3 修改显示的上下文行数。 zo 打开折叠 zc 关闭折叠 文件合并 dp 将当前窗口光标位置处的内容复制到另一窗口 do 将另一窗口光标位置处的内容复制到当前窗口 diffupdate 重新比较两个文件,如果手动修改文件的话有时不会自动同步
gg=G 源码格式化 :e! 强行重新编辑 键盘移动 (Move)一切都从键盘的移动 跳跃指令 (jumps)跳跃指令类似于游览器中的<前进><后退>按钮 重做/回复u -> undo 视觉模式 (visual)v -> 进入视觉模式 打印 (print):hardcopy -> 打印vim中的内容 (print text) 将文件写成网页格式 (html):source $VIMRUNTIME/syntax/2html.vim -> change current open file to html 格式 (format)dos/windows跟unix/linux对于文件的结束是不一样的。vim可以直接设定/更改格式 :set ff=unix -> 设定文件成unix格式 (set file in unix format) 加密 (encryption)vim可以给文件加密码 vim 语法显示 (syntax):syntax enable -> 打开语法的颜色显示 (turn on syntax color) 输入特殊字符 (special character)CTRL-v 编码就可以了 二进 制文件 (binary file)vim可以显示,编辑2进位文件 vim -b datafile :%!xxd -> 更改当前文件显示为2进位 (change display to binary) 自动完成 (auto-completion)vim本身有自动完成功能(这里不是说ctag,而是vim内建的) 自动备份 (backup)vim可以帮你自动备份文件(储存的时候,之前的文件备份出来) 自动备份有个问题就是,如果你多次储存一个文件,那么这个你的备份文件会被不断覆盖,你只能有最后一次存文件之前的那个备份。没关系,vim还提 供了patchmode,这个会把你第一次的原始文件备份下来,不会改动 开启,保存与退出 (save & exit):w -> 保存文件 (write file) 编辑指令 (edit)a -> 在光表后插入 (append after cursor) 复制与粘贴 (copy & paste)y -> 复制 (yank line) 书签 (Mark)书签是vim中非常强大的一个功能,书签分为文件书签跟全局书签。文件书签是你标记文件中的不同位置,然后可以在文件内快速跳转到你想要的位置。 而全局书签是标记不同文件中的位置。也就是说你可以在不同的文件中快速跳转 m{a-zA-Z} -> 保存书签,小写的是文件书签,可以用(a-z)中的任何字母标记。大写的是全局 书签,用大写的(A-Z)中任意字母标记。(mark position as bookmark. when lower, only stay in file. when upper, stay in global) 标志 (tag):ta -> 跳转入标志 (jump to tag) 运行外部命令 (using an external program):! -> 直接运行shell中的一个外部命令 (call any external program) :w !wc -> 将vim的内容交给外部指令来处理。这里让wc来处理vim的内容 (send vim’s file to external command. this will send the current file to wc command) 多个文件的编辑 (edit multifiles)vim可以编辑多个文件,例如 :next -> 编辑下一个文件 (next file in buffer) vim中很多东西可以用简称来写,就不用打字那么麻烦了,例如 :edit=:e, :next=:n 这样. 分屏 (split)vim提供了分屏功能(跟screen里面的split一样) 今天有人说不会看diff,其实vim也可以用来看diff,这个也是属于分屏的部分,这里也写一下。 vimdiff a.txt b.txt 如果直接给 -d选项是一样的 vim -d a.txt b.txt TAB除了split之外, vim还可以用 tab :tab split filename -> 这个就用tab的方式来显示多个文件 (use tab to display buffers) 关闭所有的tab可以使用qall的指令。另外让vim在启动的时候就自动用tabnew的方式来开启多个文件,可以用alias linux: 添加 alias vim=’vim -p’ 到 ~/.bashrc windows: 自己写个vim.bat的文件,然后放在path中,文件内容: @echo off vim -p %* 当需要更改多个tab中的文件的时候,可以用 :tabdo 这个指令 这个就相当于 loop 到你的所有的 tab 中然后运行指令。 例如有5个文件都在tab里面,需要更改一个变量名称:abc 到 def, 就可以用 :tabdo %s/abc/def/g 这样所有的5个tab里面的abc就都变成def了
折叠 (folding)vim的折叠功能。。。我记得应该是6版出来的时候才推出的吧。这个对于写程序的人来说,非常有用。 保存 (save view)对于vim来说,如果你设定了折叠,但是退出文件,不管是否保持文件,折叠部分会自动消失的。这样来说非常不方便。所以vim给你方法去保存折 叠,标签,书签等等记录。最厉害的是,vim对于每个文件可以保存最多10个view,也就是说你可以对同一个文件有10种不同的标记方法,根据你的需 要,这些东西都会保存下来。 常用指令 (commands):set ic ->设定为搜索时不区分大小 写 (search case insensitive) 记录指令 (record)q{a-z} -> 在某个寄存中记录指令 (record typed char into register) 搜索 (search)vim超级强大的一个功能就是搜索跟替换了。要是熟悉正表达(regular expressions)这个搜索跟后面的替换将会是无敌利器(支持RE的编辑器不多吧) 从简单的说起 下面直接用几个例子说话 特殊字符前面加^就可以 (for special character, user “^” at the start of range) 更多例子,例如搜索车牌规则,假设车牌是 “1MGU103” 也就是说,第一个是数字,3个大写字幕,3个数字的格式。那么我们可以直接搜索所有符合这个规则的字符 /\d\u\u\u\d\d\d 另外一个方法,是直接定义几位数字(不然要是30位,难道打30个\u去?) /\d\u\{3}\d\{3} 也可以用范围来搜索 (Using [] ranges) 用到范围搜索,列出一些范围(range) /[a-z] \d digit [0-9] :help /[] –> 特殊的定义的,可以在vim中用用help来看 (everything about special) 替换 (string substitute) – RX替换其实跟搜索是一样的。只不过替换是2个值,一个是你搜索的东西,一个是搜索到之后要替换的 string substitute (use rx) %s/abc/def/ -> 替换abc到def (substitute abc to def) 结合上面的搜索正表达式,这个替换功能。。。就十分只强大。linux中很多地方都是用正表达来做事请的,所以学会了受益无穷。 全局 (global)这个不知道怎么翻译,反正vim是叫做global,可以对搜索到的东西执行一些vim的命令。我也是2-3个星期前因为读log中一些特殊的东 西,才学会用的。 (find the match pater and execute a command) global具体自行方法是 g/pattern/command 信息过滤 (filter)vim又一强大功能 ! -> 用!就是告诉vim,执行过滤流程 (tell vim to performing a filter operation) 正式指令开始,这里用sort来做例子: 如果觉得!这样的方法5G这样的方法用起来别扭(我是这么觉得),可以用标准的命令模式来做 |
版权声明:本文标题:VIM常用操作 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1724509644a475939.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论