vim 使用

1. 介绍

vi编辑器是所有UnixLinux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对UnixLinux系统的任何版本,vi编辑器是完全相同的。

2. vi的基本概念 

基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

1) 命令行模式command mode

  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

2) 插入模式(Insert mode

  只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

3) 底行模式(last line mode

  将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。

3. vi的基本操作 

a) 进入vi

  在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:

   $ vi myfile


不过有一点要特别注意,就是您进入vi之后,是处于[命令行模式(command mode],切换到[插入模式(Insert mode]才能够输入文字。

b) 切换至插入模式(Insert mode)编辑文件

  在[命令行模式(command mode]下按一下字母[i]就可以进入[插入模式(Insert mode],这时候你就可以开始输入文字了。

c) Insert 的切换

  您目前处于[插入模式(Insert mode],只能一直输入文字,如果发现输错了字!想用光标键往回移动,将该字删除,就要先按一下[ESC]键转到[命令行模式(command mode]删除文字。

d) 退出vi及保存文件

  在[命令行模式(command mode]下,按一下[:]冒号键进入[Last line mode],例如:

: w filename (输入 [w filename]将文本以指定的文件名filename保存)

: wq (输入[wq],存盘并退出vi)

: q! (输入q!, 不存盘强制退出vi)

4. 命令行模式(command mode)功能键 

1插入模式

  按[i]切换进入插入模式[insert mode],按“i”进入插入模式后是从光标当前位置开始输入文件;

  按[a]进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;

  按[o]进入插入模式后,是插入新的一行,从行首开始输入文字。

2从插入模式切换为命令行模式

  按[ESC]键。

3移动光标

  vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母[h]、[j]、[k]、[l],分别控制光标左、下、上、右移一格。

  按[ctrl]+[b]屏幕往移动一页。

  按[ctrl]+[f]屏幕往移动一页。

  按[ctrl]+[u]屏幕往移动半页。

  按[ctrl]+[d]屏幕往移动半页。

  按数字[0]移到文章的开头。

  按[G]移动到文章的最后。

  按[$]移动到光标所在行的行尾

  按[^]移动到光标所在行的行首

  按[w]光标跳到下个字的开头

  按[e]光标跳到下个字的字尾

  按[b]光标回到上个字的开头

  按[#l]光标移到该行的第#个位置,如:5l,56l

4删除文字

  [x]每按一次,删除光标所在位置的后面一个字符。

  [#x]例如,「6x」表示删除光标所在位置的后面”6个字符。

  [X]大写的X,每按一次,删除光标所在位置的前面一个字符。

  [#X]例如,「20X」表示删除光标所在位置的前面”20个字符。

  [dd]删除光标所在行。

  [#dd]从光标所在行开始删除#

5复制

   [yw]将光标所在之处到字尾的字符复制到缓冲区中。

   [#yw]复制#个字到缓冲区

   [yy]复制光标所在行到缓冲区。

   [#yy]例如,「6yy」表示拷贝从光标所在的该行往下数”6行文字。

   [p]将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

     [+]+[p]将缓复制到剪切板上

6替换

  [r]替换光标所在处的字符。

  [R]替换光标所到之处的字符,直到按下[ESC]键为止。

7回复上一次操作

  [u]如果您误执行一个命令,可以马上按下[u],回到上一个操作。按多次“u”可以执行多次回复。

8更改

  [cw]更改光标所在处的字到字尾处

  [c#w]例如,[c3w]表示更改3个字

9跳至指定的行

  [ctrl]+[g]列出光标所在行的行号。

  [#G] 例如,[15G],表示移动光标至文章的第15行行首。

5. Last line mode下命令简介

进去[last line mode]的方法是从[command mode]下按[:]就进入[last line mode].

A) 列出行号

 [set nu]输入[set nu]后,会在文件中的每一行前面列出行号。

B) 跳到文件中的某一行

 [#] #号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了。

C) 查找字符

 [/关键字]:先按[/]键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按[n]会往后寻找到您要的关键字为止。

 [?关键字]:先按[?]键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按[n]会往前寻找到您要的关键字为止。

D) 保存文件

 [w]在冒号输入字母[w]就可以将文件保存起来。

E) 离开vi

 [q]按q就是退出,如果无法离开vi,可以用q!强制离开vi

 [qw]一般建议离开时,搭配w一起使用,这样在退出的时候还可以保存文件。

F)字符串替换

s/[search]/[replace] / 替换当前行第一个。

s/[search] /[replace] /g替换当前行所有

n$s/[search]/[replace] / 替换第 行开始到最后一行中每一行的第一个

n$s/[search]/[replace] /g替换第 行开始到最后一行中每一行的第一个所有。

 注:n 为数字,若 为 .,表示从当前行开始到最后一行

%s/[search]/[replace]/ 替换每一行的第一个。(等同于 :g/[search] /s//[replace]/) 

%s/[search]/[replace]/g替换每一行中所有。(等同于 :g/[search]/s//[replace] /g) 

 

注:可以使用 作为分隔符,此时中间出现的 不会作为分隔符
s#search/#replace/# 替换当前行第一个 search/ 为 replace/

6. vim大小写转换

 

~          将光标下的字母改变大小写

3~         将光标位置开始的3个字母改变其大小写

g~~        改变当前行字母的大小写

U          将可视模式下选择的字母全改成大写字母

u          将可视模式下选择的字母全改成小写

gUU        将当前行的字母改成大写

3gUU       将从光标开始到下面3行字母改成大写

guu       将当前行的字母全改成小写

gUw       将光标下的单词改成大写。

guw       将光标下的单词改成小写。

 

7. Vimdiff 用法

 

手工做code merge的时候,经常会用到文件比较与同步的工具。vimdiff是比较好的工具。使用者只要把注意力集中在两个文件的差异上。

首先保证系统中的diff命令是可用的。Vimdiff模式是依赖于diff命令的。

7.1. Vimdiff启动方法:

1. #vimdiff  FILE_LEFT  FILE_RIGHT

2. # vim -d  FILE_LEFT  FILE_RIGHT

3. # vim FILE_LEFT然后在vimex模式(也就是"冒号"模式)下输入:vertical diffsplit FILE_RIGHT

7.2. 交换两个窗口的位置

如果希望交换两个窗口的位置,或者希望改变窗口的分割方式,可以使用下列命令:
1. Ctrl-w K(把当前窗口移到最上边)
2. Ctrl-w H(把当前窗口移到最左边)
3. Ctrl-w J(把当前窗口移到最下边)
4. Ctrl-w L(把当前窗口移到最右边)
其中13两个操作会把窗口改成水平分割方式。

7.3. 光标移动

接下来试试在行间移动光标,可以看到左右两侧的屏幕滚动是同步的。这是因为"scrollbind"选项被设置了的结果,vim会尽力保证两侧文件的对齐。如果不想要这个特性,可以设置:
:set noscrollbind
可以使用快捷键在各个差异点之间快速移动。跳转到下一个差异点:
]c
反向跳转是:
[c
#]c,可以跳过一个或数个差异点,从而实现跳的更远。

7.4. 文件合并

文件比较的最终目的之一就是合并,以消除差异。

[dp diff "put"]希望把一个差异点中当前文件的内容复制到另一个文件里。
[do (diff "get")]希望把另一个文件的内容复制到当前行中。

[Ctrl-w, w]如果希望在两个文件之间来回跳转。

修改后vimdiff会自动重新比较文件,但是会有失败的时候。
[:diffupdate]刷新比较结果

 

7.5. 对两个文件同时进行操作

退出:
:[qa] (quit all
:[wa] (write all)保存全部文件
:[wqa] (write, then quit all)保存全部文件,然后退出
:qa! force to quit all)退出的时候不希望保存任何文件。

 

上下文的展开和查看。
:[set diffopt=context:3] 修改上下文相同文本显示命令格式(默认是6行)
[zo] (folding open)展开被折叠的相同的文本行。
[zc] (folding close)重新折叠相同的文本行。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值