Linux --- vim 常用操作

2017-04-12  本文已影响0人  月白白222

1、vim 的三种模式

vim(visual interface improve) 是 vi 的升级版本,也是 linux 中最常见的一种交互式文本编辑器。

三种模式之间的切换如下图所示:

image

2、vim 的常用操作

下面分别介绍一下vim各个模式的常见操作:

2.1、一般模式(normal mode)

当使用 vim /path/file_name 打开一个文件后,首先见到的就是一般模式(normal),在这个模式下,可以进行文本的复制,粘贴,删除等操作。

在一般模式下,可以使用键盘来控制光标的移动,下面是我在工作中常用的一些按键,掌握了这些,可以大大加快你使用 vim 编辑的速度。

表1:光标移动

按键 说明
k(↑)、j(↓)、h(←)、k(→) 光标以字符为单位,上下左右移动
w 光标以单词为单位,移动到下一个单词的词首
0 光标以行为单位,移动到光标所在行的行首
$ 光标以行为单位,移动到光标所在行的行尾
ctrl+f 光标以屏幕为单位,向下翻一屏
ctrl+b 光标以屏幕为单位,向上翻一屏
gg 或 1G 光标以文档为单位,移动到文档开头
光标以文档为单位,移动到文档结尾 G

在一般模式下可以对文件进行复制、粘贴、删除操作。

表2:编辑操作

按键 说明
y 复制光标选中的内容
p(大P正好是相反,在光标所在行的上面粘贴) 在光标所在行的下一行,粘贴所选择的内容
x(大X的使用效果与backspace相同) 以字符为单位,删除光标所在处的一个字符
d 删除光标选中的内容

当你在 windows 上面,习惯了使用鼠标进行选中时,一下子使用 vim 可能会有不习惯的地方。其实在 vim 中也有类似鼠标选择的功能,而且相较于 windows 上面常见的选择功能可能更加强大。

表3:选中

按键 说明
v 以字符为单位,光标经过的地方都会被选中
shift+v 以行为单位,光标经过的地方都会被选中
ctrl+v 以列为单位,光标经过的地方都会被选中

在 vim 中也有类似 word 中的撤消,恢复等功能

表4:撤消、恢复、重复

按键 说明
u 撤消上一个动作
ctrl+r 恢复上一个动作
. 重复上一个动作
2.2、编辑模式

那当我需要添加一些内容的时候呢,这个时候要以通过以下方式,进入编辑模式。编辑模式有两种一种是插入模式(insert),别一种是改写模式(replace)。改写模式我除了做实验,在生产中从来就没有用过,这边就暂时不列出来了。

表5:进入或退出编辑模式

按键 说明
i(insert) 以字符为单位,在当前光标所在处进行输入
a(append) 以字符为单位,在当前光标处退后一个字符输入
I 以行为单位,在当前光标所在行的行首输入
A 以行为单位,在当前光标所在行的行尾输入
o(open) 在当前光标所在行的下一行,打开一个新行输入
O 在当前光标所在行的上一行,打开一个新行输入
Esc键 返回编辑模式
2.3 命令模式

当我要对文档内容进行一些查找,替换,保存,退出或临时更改 vim 的属性时,就要使用命令模式,它通常使用 :(冒号)/(斜线)?(问号) 三种方式进入,而使用 Esc 键返回编辑模式。

下面就介绍一些命令行模式下常用的操作:

注:

以下内容中,如果是用:(冒号)进入的命令模式,那介绍时冒号我就省略了。

表6:查找与替换

按键 说明
/string 使用n(next)代表查找下一个,N代表查找上一个,下同。 以光标所在处,向下查找字符串string
?string 以光标所在处,向上查找字符串string
/pattern/ 使用正则表达式进行模糊匹配
n1,n2s/pattern/string/g 如果不加g(global)那么默认只会替换每行查找到的第一个,符合pattern的内容 在n1~n2行之间查找,符合模式pattern的内容,并将其替换成字符串string
1,$s/pattern/string/g;%s/pattern/string/g 两者是等效的,随便用哪个 全文替换,有两种表达方式
n1,n2s/pattern/string/gc;c(confirm) 在替换前进行询问确认

表7:保存、退出等

按键 说明
w 对编辑的内容进行保存
w file_name 将当前文档另存为file_name
w! 强制保存,当编辑一些只读文件时,需要用到这个
q 退出关闭vim
q! 放弃所有编辑,并强制退出
x 保存编辑并退出
!command 在vim中执行bash命令
r file_name 在已经打开一个文件后,还想在当前vim中再打开其它文件,这个功能我很少用,我一般使用下面要介绍的多窗口编辑,两种方式无优劣之分,更多的是使用习惯上的区别。

命令模式中可以临时设置 vim 的属性,我常用的有以下几个,更多的内容可以自行查看 vim 的 help 文件或 Google,如果不想每次都进行更改,可以将其写到 vim 的配置文件中。

注:

不推荐直接修改 vim 的默认配置文件 /etc/vimrc 建议在用户的家目录新建 .vimrc 文件,将自己个性化配置记录其中。

表8:临时设置vim的属性

按键 说明
set nu/nonu 显示或关闭行号
set hlsearch/nohlsearch 打开或关闭搜索结果高亮显示
set syntax on/off 打开或关闭语法着色
help 打开vim的帮助文件

到此 vim 一些常见的基础操作就介绍完了,附录为 vim 的多窗口操作。

而 vim 操作的一大特色就是可以进行组合操作,比如说保存退出,可以这样做 :wq ;再比如,我想把1到10行全部删除,可以这样做 :1,10d,更多的组合操作,就期待大家在实践中慢慢发现了


附A:vim 的多窗口操作

表9:常用分屏操作

按键 说明
sp filename 用水平分屏的方式打开新文件
vsp filename 用垂直分屏的方式打开新文件
ctrl+w+[k(↑)/j(↓)/h(←)/k(→)] 光标上下左右移动

附B:vim使用环境配置

vim的编码设置

vim的全局环境变量的配置文件是 /etc/vimrc,但一般不建议修改这个配置文件,而是在自己用户家目录,新建 .vimrc 文件,在该文件中定义自己个性化的需求。

当我们需要在 windows 与 linux 之间来回复制文件时,因为 windows 默认使用的编码规则是 cp936(基本等同于GBK),而 linux 通常使用的是 utf-8 进行编码。所以常常会出现乱码的情况,为了尽量避免这种情况的发生,我们就需要对 vim 的默认编码环境进行设置。

在 vim 中与字符编码相关的有四个变量,与今天我们配置相关的,主要有两个:fileencodings 和 fileencoding

下面分别对这四个编码变量做个简单说明:

注:

通常情况下,使用了错误的解码方式,就会造成乱码,为了尽量的避免这种情况发生。
推荐值为:

set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

vim 是调用外部命令,iconv 来实现编码之间的转换。如果你想手工转换文件的默认编码方式,也可以通过 iconv 来进行。具体的使用方法要以 man 一下。

注1:

只有在对文件正确解码的前提之下,对文件转码才有意义。也就是说,当你已经打开了一个文件,发现文件内容是乱码,这个时候,你通过设置 fileencoding 这个值,是没有办法纠正乱码的。

注2:

如果你不想每次手工设置 vim 环境变量的话,也可以将其写入配置文件,永久保存。除了上面提供的,还有许多可定制的选项,建议自行通过 help 文件,研究一下。

注3:

vim windows 版本初始化:

syntax on
set nobackup
colorscheme darkblue
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

附C:vim 的临文件

在使用 vim 编辑一个文件时,vim 会在被编辑文件所在的目录下面,新建一个名为 .file_name.swp 的文件。

有时候当你打开一个文档,发现会有如下提示时
这个提示分成三部分

  1. 提示发现一个临时文件,以及对临时文件基本情况的一个概述
  2. 介绍了出现这种情况的两种原因
  3. 提供了一些处置选项
E325: ATTENTION
Found a swap fileby the name ".vimrc.swp"
owned by: root   dated: Sun Aug  3 19:04:49 2014
filename: ~root/.vimrc
modified: no
user name: root   host name: localhost.localdomain
process ID: 4344 (still running)
While opening file".vimrc"
dated: Sun Aug  3 12:41:39 2014
(1) Another program may be editing the same file.
If this is the case, be careful not to end up with two
different instances of the same filewhen making changes.
Quit, or continuewith caution.
(2) An edit session forthis filecrashed.
If this is the case, use ":recover"or "vim -r .vimrc"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file".vimrc.swp"
to avoid this message.
Swap file".vimrc.swp"already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:

两种情况生成的处置项菜单也是有区别的,第二种情况会多一个 delete 选项

上一篇 下一篇

猜你喜欢

热点阅读