Vi

使用vim有段时间了,先简单写下做个标记,以后再详细整理。

vim使用

vimtutor中的讲解不错,直接使用吧。(shell下输入:vimtutor)

第一讲

  1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。
         h (左移)       j (下行)       k (上行)     l (右移)

  2. 欲进入 Vim 编辑器(从命令行提示符),请输入:vim 文件名 <回车>

  3. 欲退出 Vim 编辑器,请输入 <ESC>   :q!   <回车> 放弃所有改动。
                      或者输入 <ESC>   :wq   <回车> 保存改动。

  4. 在正常模式下删除光标所在位置的字符,请按: x

  5. 欲插入或添加文本,请输入:

         i   输入欲插入文本   <ESC>             在光标前插入文本
         A   输入欲添加文本   <ESC>             在一行后添加文本

特别提示:按下 <ESC> 键会带您回到正常模式或者撤消一个不想输入或部分完整
的命令。

第二讲

  1. 欲从当前光标删除至下一个单词,请输入:dw
  2. 欲从当前光标删除至当前行末尾,请输入:d$
  3. 欲删除整行,请输入:dd

  4. 欲重复一个动作,请在它前面加上一个数字:2w
  5. 在正常模式下修改命令的格式是:
               operator   [number]   motion
     其中:
       operator - 操作符,代表要做的事情,比如 d 代表删除
       [number] - 可以附加的数字,代表动作重复的次数
       motion   - 动作,代表在所操作的文本上的移动,例如 w 代表单词(word),
                  $ 代表行末等等。

  6. 欲移动光标到行首,请按数字0键:0

  7. 欲撤消以前的操作,请输入:u (小写的u)
     欲撤消在一行中所做的改动,请输入:U (大写的U)
     欲撤消以前的撤消命令,恢复以前的操作结果,请输入:CTRL-R

第三讲

  1. 要重新置入已经删除的文本内容,请按小写字母 p 键。该操作可以将已删除
     的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置
     于当前光标所在行的下一行。

  2. 要替换光标所在位置的字符,请输入小写的 r 和要替换掉原位置字符的新字
     符即可。

  3. 更改类命令允许您改变从当前光标所在位置直到动作指示的位置中间的文本。
     比如输入 ce 可以替换当前光标到单词的末尾的内容;输入 c$ 可以替换当
     前光标到行末的内容。

  4. 更改类命令的格式是:

         c   [number]   motion

第四讲

  1. 要重新置入已经删除的文本内容,请按小写字母 p 键。该操作可以将已删除
     的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置
     于当前光标所在行的下一行。

  2. 要替换光标所在位置的字符,请输入小写的 r 和要替换掉原位置字符的新字
     符即可。

  3. 更改类命令允许您改变从当前光标所在位置直到动作指示的位置中间的文本。
     比如输入 ce 可以替换当前光标到单词的末尾的内容;输入 c$ 可以替换当
     前光标到行末的内容。

  4. 更改类命令的格式是:

         c   [number]   motion

第五讲

  1. :!command 用于执行一个外部命令 command。

     请看一些实际例子:
         (MS-DOS)         (Unix)
          :!dir            :!ls            -  用于显示当前目录的内容。
          :!del FILENAME   :!rm FILENAME   -  用于删除名为 FILENAME 的文件。

  2. :w FILENAME  可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文
     件中。

  3. v motion :w FILENAME 可将当前编辑文件中可视模式下选中的内容保存到文件
     FILENAME 中。

  4. :r FILENAME 可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置
     后面。

  5. :r !dir 可以读取 dir 命令的输出并将其放置到当前文件的光标位置后面。

第六讲

  1. 输入小写的 o 可以在光标下方打开新的一行并进入插入模式。
     输入大写的 O 可以在光标上方打开新的一行。

  2. 输入小写的 a 可以在光标所在位置之后插入文本。
     输入大写的 A 可以在光标所在行的行末之后插入文本。

  3. e 命令可以使光标移动到单词末尾。

  4. 操作符 y 复制文本,p 粘贴先前复制的文本。

  5. 输入大写的 R 将进入替换模式,直至按 <ESC> 键回到正常模式。

  6. 输入 :set xxx 可以设置 xxx 选项。一些有用的选项如下:
        'ic' 'ignorecase'       查找时忽略字母大小写
        'is' 'incsearch'        查找短语时显示部分匹配
        'hls' 'hlsearch'        高亮显示所有的匹配短语
     选项名可以用完整版本,也可以用缩略版本。

  7. 在选项前加上 no 可以关闭选项:  :set noic

第七讲

  1. 输入 :help 或者按 <F1> 键或 <Help> 键可以打开帮助窗口。

  2. 输入 :help cmd 可以找到关于 cmd 命令的帮助。

  3. 输入 CTRL-W CTRL-W  可以使您在窗口之间跳转。

  4. 输入 :q 以关闭帮助窗口

  5. 您可以创建一个 vimrc 启动脚本文件用来保存您偏好的设置。

  6. 当输入 : 命令时,按 CTRL-D 可以查看可能的补全结果。
     按 <TAB> 可以使用一个补全。

2. 键盘图

因为图片大小有限制,图片不太清晰。

Vi_第1张图片

Vi_第2张图片

Vi_第3张图片

3. 插件

Taglist+cscope+ctags

暂记:

1. YouCompleteMe

2. Ack/Ag

  • Ack: http://beyondgrep.com/

  • Ack VIM 插件: ack.vim - Plugin for the Perl module / CLI script 'ack' : vim online

  • Ag: Geoff's site: The Silver Searcher: Better than Ack

  • Ag VIM 插件rking/ag.vim 路 GitHub

4. 技巧补遗

4.1. 小的指令组合

  • xp    调换两个字符

  • deep    调换两个单词(光标开始处于第一个单词的左边)

  • ddp    调换两行

  • 10i=^M [ESC]     连续10次写下“=”和回车(此后,观察“.”“3.”指令的效果)

  • N gU<Enter>     将N行的中的小写字符变为大写(“~”指令变换光标下字符的大小形式,可加个N次,嘿嘿)

  • N gu<Enter>     将N行的中的大写字符变为小写

4.2. 区域选择:<action>a<object> and <action>i<object>

<action>a<object> and <action>i<object>

action可以是任何的命令,如 d (删除), y (拷贝), v (在可视模式下选择)。

object 可能是:w 一个单词,W 一个以空格为分隔的单词,s 一个句子,p 一个段落。也可以是特殊字符,如:"、 '、 )、 }、 ]。

假设光标在第一个字母o处, (map (+) ("foo"))

  • vi" → will select foo.

  • va" → will select "foo".

  • vi) → will select "foo".

  • va) → will select ("foo").

  • v2i) → will select map (+) ("foo")

  • v2a) → will select (map (+) ("foo"))

效果见下图

      Vi_第4张图片

4.3 选择矩形区域:<C-v>

给多行代码添加注释时会很有用。例如:0<C-v><C-d>I-- [ESC]

  • ^ → go to the first non-blank character of the line

  • <C-v> → Start block selection

  • <C-d> → move down (could also be jjj or %, etc…)

  • I-- [ESC] → write -- to comment each line

演示效果如下图所示(以下几张动态图来自原作者):

        Vi_第5张图片

4.4 宏录制:qa

qa 将你的动作录制到寄存器a中。@a 播放寄存器a中的宏。@@是快捷方式,用来播放上一个执行过的宏。

        Vi_第6张图片

效果如下:

        Vi_第7张图片

4.5 可视化选择:v,V,<C-v>

以<C-v>为例,v 和 V 类似。在可视化下选中内容后,你可以

  • J → join all the lines together.

  • < (resp. >) → indent to the left (resp. to the right).

  • = → auto indent

在所有被选中行的末尾添加内容。

  • <C-v>

  • go to desired line (jjj or <C-d> or /pattern or % etc…)

  • $ go to the end of the line

  • A, write text, ESC.

操作及效果演示如下:

       Vi_第8张图片

5. 其他

当运行vi或者vim时,报告如下错误:
    vim: error while loading shared LIBraries: LIBperl.so: cannot open shared object file: No such file or directory

解决方案:出现类似错误是由于缺少相关的库文件(*.so文件)造成的,可能的原因是版本不匹配或者没有安装相应的RPM文件。

使用ldd命令确认某程序执行需要哪些动态链接库

[root@UFO]# ldd /usr/bin/vim


你可能感兴趣的:(Vi)