在linux系统当中有非常多的文本编辑器存在,而我们首先接触的就是nano。nano编辑器的使用非常简单,在nano后直接加上文件名就可以打开一个新文件或旧文件。nano中:
Ctr+G, 取得在线帮助
Ctrl+X,离开nano,若修改,提示是否需要保存
Ctrl+O,保存文件
...
其他组合键在编辑器的下方都会显示出来,在这里就不多做说明了。下面,就介绍一下重要的文本编辑器vim的使用。
Vim具有程序编辑能力,可以主动以习题颜色辨别语法的正确性,方便程序设计,并且程序简单,编辑速度相当快,所有,使用vim编辑文件将是一个非常好的选择。
基本上vim分为3种模式,分别是编辑模式(又叫命令模式)、输入模式(又叫插入模式)和末行模式。在这要清楚,编辑模式是编辑整个文本,不是想文本中写入数据,比如删除两行、复制两行、粘贴都在编辑模式下执行,而输入模式,则是向文本中写入数据。
Vim中前加 " 是注释的意思
vim中,模式与模式之间可以相互转换:
编辑模式转为输入模式: i、o、a、c、I、O、A、C
i (insert)添加在光标前面
I 当前光标所在行首进行插入操作
a (append追加)光标后进行插入操作
A 光标所在行的行尾进行插入操作
o 光标所在行的下方打开一个新行,并进行输入操作
O 光标所在行的上方打开一个新行
输入模式转为编辑模式: Esc
输入模式转为末行模式: :
末行模式转为输入模式: 摁两次Esc键
编辑模式不能直接转换为末行模式,需要间接转换。
打开vim编辑器的方法和nano相同,但vim的用法要比nano更全:
#vim file1,file2,... 可以直接打开多个文件
#vim +n file (n为数字) 文件打开后光标直接出现在第n行的行首
#vim +/string/ file 文件打开后光标出现在第一次出现string的行行首
vim编辑器编辑文件时退出方式:
:wq 保存退出
:wqall 若打开多个文件,多个文件同时保存退出
:wq! 强制保存退出
Shift+zz 亦是保存退出的意思
:q 退出,不保存(vim中只要你动了文件中的内容不管改没改变,都默认为文件被改动,:q就会退不出去)
:q! 强制退出,不保存
:qall! 若打开多个文件,强制退出全部文件,不保存
如何实现光标移动:
h 或向左箭头键 向左侧移动
l 或向右箭头键 向右移动
j 或向下箭头键 向下移动
k 或向上箭头键 向上移动
w 下一个单词词首 3w 连跳3个单词
e 先跳到本次词次尾,再往后跳到词的词尾
b 与e相反
( 句子间跳转,向前跳,跳到句首
) 句子间跳转,向后跳,跳到句首
{ 段间跳转,往前跳一段
} 段间跳转,往后跳一段
0 绝对行首
$ 绝对行尾,与0相对
^ 行首的第一个非空白字符
Ctrl+f 向文件尾部翻一屏
Ctrl+b 相反,往文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 相反,往文件首部翻半屏
+ 光标移动到非空格符的下一行
- 光标移动到非空格符的上一行
n<space> (n为数字)
20 再按 <space > 光标向后移动20行
H 光标移动到这个屏幕的最上方那一行的第一个字符
M 光标移动到这个屏幕的中央那一行的第一个字符
L 光标移动到这个屏幕的最下方那一行的第一个字符
:set nu 显示行号
:set nonu 撤消
:set ai 自动缩进
:set noai 撤消
c 修改(change),跟跳转字符一块用,指定删除范围
cw:删除光标所在的字符串,而后进入输入模式
c$: 由光标所在位置删到行尾
c0:由光标所在位置删到行首
cc: 删除光标所在行
ncc: 删除光标往下n行
5cc 删除包括光标所在行往下5行
C : 光标所在位置删到行尾 类似c$
删除字符:
x: 往后删除一个字符,删除之后进入输入模式
nx:往后一下删除n个字符
X: 删除光标前面一个字符
nX:往前一下删n个字符
替换:(replace)
r: 替换光标所在的那个字符一次
R: 一直替换光标所在的文字,直到按下[Esc]键为止
5rA: 光标所在处下5个字符换成A
撤销:
u(undo):撤销最近一次的编辑操作
uu: 撤销最近2次的编辑操作
nu: 撤销最近n次的操作
Ctrl+r 撤销刚才的撤销操作
重做:
. :(redo)重复执行上一条命令
复制:
y(yank):复制包括光标所在行往下两行
yy 复制光标所在行
nyy (n为数字)复制光标所在的向下n行,包括光标所在行
y1G 复制光标所在行到第一行的所有数据
yG 复制光标所在行到最后一行的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
剪切: 也可以当做删除来用
d 删除包括光标所在行往下两行
dd 删除光标所在行
ndd 删除光标所在n行
d1G 删除光标所在行到第一行的所有数据
dG 删除光标所在行到最后一行的所有数据
d0 删除光标的在的那个字符到该行行首的所有数据
d$ 删除光标所在的那个字符到该行行尾的所有数据
粘贴:
p 光标所在行的下方
P 光标所在行的上方
查找:
/work 向下寻找一个名称为word 的字符串
?work 向上寻找一个名称为word 的字符串
n 重复前一个查找的操作
N 为“反向”进行前一个操作
替换:
:n1,n2s/word1/word2/g 从第n1行到第n2行查找word1字符串,并替换成word2
:1,$s/word1/word2/g 从第一行到最后一行查找word1字符串,并替换成word2
:1,$s/word1/word2/gc 从第一行到最后一行查找word1字符串,并替换成word2,且在替换前显示提示字符给用户确认(confirm)是否需要替换
其中的分隔符可为任意值,最好是命令中没有包含的字符
:%s/^#[[:space:]]*\([^[:space:]]\)/\1/g
:%s@\<\([[:alpha:]]\{1,\}\)e\>@\1E@\g
% 全文搜索
vim可以打开多个文件,当打开多个文件时:
:prev 上一个文件
:next 下一个文件
:first 第一个文件
:last 最后一个文件
:files 列出目前目前vim打开的所有文件
:N 编辑上一个文件
:n 编辑下一个文件
:qall 全部退出
:qall! 强行全部退出
分割窗口显示多个窗口:
水平分割: Ctrl+w,s
垂直分割: Ctrl+w,v
Ctrl+w,方向箭头 方向箭头向哪,就往哪移动
Ctrl+w,t(最上方窗口) ,b (最下方窗口)
:set nu 显示行号
:set nonu 撤消
:set ai 自动缩进
:set noai 撤消