玩Linux的同学肯定听说过Vim这款编辑器,我已开始用ubuntu时觉得在终端里编辑文档是一件非常蠢的事情,知道某天看一个学长在完全不使用鼠标的情况下高速地编辑代码,这么炫(zhuang)酷(bi)的工具我也要学会。。。
模式转换
按键说明
第一部份:一般指令模式可用的按钮说明,光标移动、复制贴上、搜寻取代等
- [Ctrl] + [f]:屏幕“向下”移动一页,相当于 [Page Down]按键。
- [Ctrl] + [b]:屏幕“向上”移动一页,相当于 [Page Up] 按键。
- 0 或功能键[Home]:这是数字“ 0 ”:移动到这一列的最前面字符处。
- $ 或功能键[End]:移动到这一列的最后面字符处。
- G:移动到这个文件的最后一列。
- gg:移动到这个文件的第一列。
- n:n 为数字。光标向下移动 n 列。
- /word:向光标之下寻找一个名称为 word 的字串。
- :n1,n2s/word1/word2/g:n1 与 n2 为数字。在第 n1 与 n2 列之间寻找 word1 这个字串,并将该字串取代为 word2。
- :1,$s/word1/word2/g:从第一列到最后一列寻找 word1 字串,并将该字串取代为 word2。
- :1,$s/word1/word2/gc:从第一列到最后一列寻找 word1 字串,并将该字串取代为 word2 。且在取代前显示提示字符给使用者确认 (confirm) 是否需要取代。
- x, X:在一列字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键)。
- dd:删除光标所在的那一整列。
- ndd:n 为数字。删除光标所在的向下 n 列。
- yy:复制光标所在的那一列。
- nyy:n 为数字。复制光标所在的向下 n 列。
- p, P:p 为将已复制的数据在光标下一列贴上,P 则为贴在光标上一列。
- u:复原前一个动作。
- [Ctrl]+r:重做上一个动作。
- .:重复前一个动作的意思。
第二部份:一般指令模式切换到编辑模式的可用的按钮说明
- i, I:进入插入模式(Insert mode)。i 为“从目前光标所在处插入”, I 为“在目前所在列的第一个非空白字符处开始插入”。
- a, A:进入插入模式(Insert mode)。a 为“从目前光标所在的下一个字符处开始插入”, A 为“从光标所在列的最后一个字符处开始插入”。
- o, O:进入插入模式(Insert mode)。这是英文字母 o 的大小写。o 为“在目前光标所在的下一列处插入新的一列”; O 为在目前光标所在处的上一列插入新的一列。
- r, R:进入取代模式(Replace mode)。r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止。
- [Esc]:退出编辑模式,回到一般指令模式中。
第三部份:一般指令模式切换到命令行界面的可用按钮说明
- :w:将编辑的数据写入硬盘文件中。
- :q:离开 vi 。
- :wq:储存后离开,若为 :wq! 则为强制储存后离开。
Vim的额外功能
区块选择
v:字符选择,效果与用鼠标选择相同
V:行选择
[Ctrl]+v:区块选择,可以用长方形的方式选择数据
y:将反白的地方复制起来
d:将反白的地方删除掉
p:将刚刚复制的区块,在光标所在处贴上多文件编辑
:n:编辑下一个文件
:N:编辑上一个文件
:files:列出目前这个 vim 的打开的所有文件多窗口功能
:sp [filename]:打开一个新窗口,如果有filename, 表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件内容(同步显示)。[ctrl]+w+ j/[ctrl]+w+↓ 按键的按法是:先按下 [ctrl] 不放,再按下 w 后放开所有的按键,然后再按下 j (或向下方向键),则光标可移动到下方的窗口。
[ctrl]+w+ k/[ctrl]+w+↑ 同上,不过光标移动到上面的窗口。
Vim环境配置
- :set nu/:set nonu:设置与取消行号
- :set hlsearch/:set nohlsearch:hlsearch 就是 high light search(高亮度搜寻)。 这个就是设置是否将搜寻的字串反白的设置值。默认值是 hlsearch。
- :set hlsearch/set nohlsearch:hlsearch 就是 high light search(高亮度搜寻)。 这个就是设置是否将搜寻的字串反白的设置值。默认值是 hlsearch。
- :set autoindent/:set noautoindent:是否自动储存备份文件?一般是nobackup 的, 如果设置 backup 的话,那么当你更动任何一个文件时,则原始文件会被另存成一个文件名为 filename~ 的文件。
- :set backup:是否自动储存备份文件。
- :set ruler:显示或不显示状态列说明。
- :set showmode:这个则是,是否要显示–INSERT– 之类的字眼在左下角的状态列。
- :set backspace=(012):一般来说, 如果我们按下 i 进入编辑模式后,可以利用倒退键(backspace) 来删除任意字符的。 但是,某些 distribution 则不许如此。此时,我们就可以通过 backspace 来设置啰~ 当 backspace 为 2 时,就是可以删除任意值;0 或 1 时,仅可删除刚刚输入的字符, 而无法删除原本就已经存在的文字了。
- :set all:显示目前所有的环境参数设置值。
- :set:显示与系统默认值不同的设置参数。
- :syntax on/:syntax off:是否依据程序相关语法显示不同颜色? 举例来说,在编辑一个纯文本文件时,如果开头是以 # 开始,那么该列就会变成蓝色。 如果你懂得写程序,那么这个 :syntax on 还会主动的帮你除错呢!但是, 如果你仅是编写纯文本,要避免颜色对你的屏幕产生的干扰,则可以取消这个设置 。
编码问题
编码转换工具
- iconv:可以将指定文件从原始编码转换为目标编码。
- dos2unix:由于Windows与Linux对于断行字符的定义不同,可以使用这个工具对纯文本文件进行转换。