VIM 使用技巧

    1. 让vim显示文本颜色
      在用户目录下新建.vimrc文件,然后输入”syntax on”,打开语法高亮显示
   2. 命令行模式(command mode)功能键
      vim picture
      按「a」进入插入模式后 是从目前光标所在位置的下一个位置开始输入文字
      按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
      从插入模式切换为命令行模式按「ESC」键。
      按数字「0」:移到行的开头。
      按「G」:移动到文章的最后。
      按「$」:移动到光标所在行的“行尾”。
      按「^」:移动到光标所在行的“行首”
      按「w」:光标跳到下个字的开头
      按「e」:光标跳到下个字的字尾

      按「ge」:与e相反

      按「b」:光标回到上个字的开头
      按「H」:光标回到文章开头
      按「M」:光标移到文章中间
      按「L」:光标回到文章结尾
      按[gg] 到文件首
      按[gd] 到变量声明
      按「#l」:光标移到该行的第#个位置
      如:5l,56l 移动到该行第5,56个位置

      %:移动到与制匹配的括号上去(),{},[],<>等。
      shift + < 左移一行
      shift + > 右移一行


屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

CTRL+G 得到当前光标在文件中的位置

      「x」: 每按一次,删除光标所在位置的“后面”一个字符。
      「nx」: 例如,「6x」表示删除光标所在位置的“后面”6个字符。
      「X」: 大写的X,每按一次,删除光标所在位置的“前面”一个字符。
      「nX」: 例如,「20X」表示删除光标所在位置的“前面”20个字符。
      「dd」: 删除光标所在行。
      「ndd」: 从光标所在行开始删除n行
      「dw」: 删除光标后的一个单词.
      「db」: 删除光标前的一个单词
      「d0]:删至行首
      「d$]:删至行尾
      「yw」: 将光标所在之处到字尾的字符复制到缓冲区中。
      「nyw」: 复制n个字到缓冲区
      「yy」: 复制光标所在行到缓冲区。
      「nyy」: 例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
      「p」: 将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
      「r」: 替换光标所在处的字符。
      「R」: 替换光标所到之处的字符,直到按下「ESC」键为止。
      「u」: 如果您误执行一个命令,可以按下「u」回到上一个操作。按多次“u”可以执行多次回复。
      「cw」: 更改光标所在处的字到字尾处
      「cnw」: 例如,「c3w」表示更改3个字
      「ctrl」+「g」 列出光标所在行的行号。
      「nG」:例如,「15G」,表示移动光标至文章的第15行行首。

s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之

'. 此命令相当强大, 它移动光标到上一次的修改点.

c-p(c-n) 在编辑模式中, 输入几个字符后再输入此命令则 vi 开始向上(下)搜
索开头与其匹配的单词并补齐, 不断输入此命令则循环查找. 此命令
会在所有在这个 vim 程序中打开的文件中进行匹配.

   3. Last line mode下命令简介
      在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」

:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除

光标移到起始行,输入ma
光标移到结束行,输入mb
光标移到粘贴行,输入mc

然后 :'a,'b co 'c


ZZ:保存当前文档并退出VIM


m[a-z]:在文中做标记,标记号可为a-z的26个字母,用`a可以移动到标记a处


:read file.c 将文件file.c的内容插入到当前光标所在的下面
:0read file.c 将文件file.c的内容插入到当前文件的开始处(第0行)
:nread file.c 将文件file.c的内容插入到当前文件的第n行后面
:read !cmd :将外部命令cmd的输出插如到当前光标所在的下面


把 co 改成 m 就成剪切了

 

          :w filename (将文章以指定的文件名filename保存)
          : wq (输入「wq」,存盘并退出vi)
          : q! (输入q!, 不存盘强制退出vi)
          :n 如输入数字15,再回车,就会跳到文章的第15行。
          :/关键字 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
          : ?关键字 先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

   4. 行号与文件
      命令模式下,可以规定命令操作的行号范围。数值用来指定绝对行号;字符“.”表示光标所在行的行号;字符“$”表示正文最后一行的行号;简单的表达式,例如“.+5”表示当前行往下的第 5 行。例如:

          :345 将光标移到第 345 行
          :345w file 将第 345 行写入 file 文件
          :3,5w file 将第 3 行至第 5 行写入 file 文件
          :1,.w file 将第 1 行至当前行写入 file 文件
          :.,$w file 将当前行至最后一行写入 file 文件
          : .,.+5w file 从当前行开始将 6 行内容写入 file 文件
          :1,$w file 将所有内容写入 file 文件,相当于 :w file 命令

      在命令模式下,允许从文件中读取正文,或将正文写入文件。
      例如:

          :w 将编辑的内容写入原始文件,用来保存编辑的中间结果
          :wq 将编辑的内容写入原始文件并退出编辑程序(相当于 ZZ 命令)
          :w file 将编辑的内容写入 file 文件,保持原有文件的内容不变
          :a,bw file 将第 a 行至第 b 行的内容写入 file 文件
          :r file 读取 file 文件的内容,插入当前光标所在行的后面
          :e file 编辑新文件 file 代替原有内容
          :f file 将当前文件重命名为 file
          :f 打印当前文件名称和状态,如文件的行数、光标所在的行号等
          恢复文件,该文件被删除,若意外退出,而没有保存文件的最新修改内容,则可以使用恢复命令:
          :recover 恢复文件也可以在启动 vi 时利用 -r 选项。
          :e 文件名 编辑另一文件
          :e ! 重新编辑文件,放弃任何改变
          :sh 执行sh,结束后回到编辑
          :! 命令 执行命令后回到编辑
          :n 编辑下一文件
          :n 文件表 重新定义待编辑文件表
          set 设置 vi 的选项,例如
          : set nu 表示每行前显示行号,在选项前加no则表示清除该选项,例如
          :set nonu 表示每行前不显示行号,下面是一些常用的选项:
          :set ai 自动缩进
          :set aw 编辑下一文件前自动存盘
          :set ic 查找字符串时不区分大小写
          :set nu 每行前显示行号
          :set sm 输入)及}时显示与之配对的( 或 {
          :set slow 插入时延迟屏幕刷新
          :set ws 使查找能绕过文件尾从头进行
          :set wa 写文件之前不作对文件的检查

   5. 常见问题及应用技巧
      1.在一个新文件中读/etc/passwd中的内容,取出用户名部分。

          vi file :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd
          :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。
          您也可以在指定的行号后读入文件内容,例如使用命令“:3r/etc/passwd”从新文件的第3行开始读入/etc/passwd的所有内容。
          我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。
          #cat squid.conf.default | grep -v ‘^$’ | grep -v ‘^#’

      2.在打开一个文件编辑后才知道登录的用户对该文件没有写的权限,不能存盘,需要将所做修改存入临时文件。

          vi file :w/tmp/1保存所做的所有修改,也可以将其中的某一部分修改保存到临时文件,例如仅仅把第20~59行之间的内容存盘成文件/tmp/1,我们可以键入如下命令。
          vi file
          :20,59w /tmp/1

      3.用VI编辑一个文件,但需要删除大段的内容。
      首先利用编辑命令“vi file”打开文件,然后将光标移到需要删除的行处按Ctrl+G显示行号,再到结尾处再按Ctrl+G,显示文件结尾的行号。

          :23,1045d假定2次得到的行号为23和1045,则把这期间的内容全删除,也可以在要删除的开始行和结束行中用ma、mb命令标记,然后利用“:’a,’bd”命令删除。

      4.在整个文件的各行或某几行的行首或行尾加一些字符串。

          vi file :3,$s/^/some string / 在文件的第一行至最后一行的行首插入“some string”。
          :%s/$/some string/g 在整个文件每一行的行尾添加“some string”。
          :%s/string1/string2/g 在整个文件中替换“string1”成“string2”。
          :3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。
          注意: 其中s为substitute,%表示所有行,g表示global。

      5.同时编辑2个文件,拷贝一个文件中的文本并粘贴到另一个文件中。

          vi file1 file2 yy 在文件1的光标处拷贝所在行
          :n 切换到文件2 (n-next)
          p 在文件2的光标所在处粘贴所拷贝的行
          :n 切换回文件1

      6.替换文件中的路径。
      使用命令“:%s#/usr/bin#/bin#g”可以把文件中所有路径/usr/bin换成/bin。也可以使用命令“:%s//usr/bin//bin/g”实现,其中“”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。

举一个复杂的例子,把文中的所有字符串“abc……xyz”替换为“xyz……abc”可以有下列写法:
:%s/abc/(.*/)xyz/xyz/1abc/g
:%s//(abc/)/(.*/)/(xyz/)//3/2/1/g
* diff 模式

专门用于比较编辑两个或多个内容相近的文件的模式。一般来说,比如你要比较编辑 A 跟 B 两个文件,你可以命令行启动 vim - d A B 或者这样:先打开文件 A,然后 :vsplit 打开文件 B,对文件 A 和 B 都输入命令 :diffthis。这时 VIM 将非常清晰的对比显示出两个文件的不同之处,编辑起来十分方便。

9. TAB
  TAB 就是制表符, 单独拿出来做一节是因为这个东西确实很有用.

  <<                  输入此命令则光标所在行向左移动一个 tab.
  >>                  输入此命令则光标所在行向右移动一个 tab.
  5>>                 输入此命令则光标后 5 行向右移动一个 tab.
  :12,24>             此命令将12行到14行的数据都向右移动一个 tab.
  :12,24>>            此命令将12行到14行的数据都向右移动两个 tab.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值