**
1,编辑器之神-vim
**
对服务器上的文件进行修改,使用ssh远程登录到服务器上,使用vim进行快速的编辑
1,打开文件
vim 文件名 如果文件存在,会直接打开该文件 。如果不存在,会新建一个
vim /path/to/somefile ::G
vim 文件名 +# :打开文件,并定位于第#行 例如:vim python.py +16
vim 文件名 +:打开文件,定位至最后一行
vim +/PATTERN : 打开文件,定位至第一次被PATTERN匹配到的行的行首
2,关闭文件
末行模式
:q 退出 没有动过文件
:wq 保存并退出 动过了,不后悔
:x 保存并退出 动过了,不后悔
:q! 不保存并退出 动过了,后悔了
:w 保存
:w! 强行保存
命令模式
ZZ: 保存并退出 不需要冒号
3,编辑(输入)
i: 插入光标前一个字符
I: 插入行首
a: 插入光标后一个字符
A: 插入行未
o: 向下新开一行,插入行首
O: 向上新开一行,插入行首
4,命令模式
移动光标
字符
h: 左
j: 下
k: 上
l: 右
单词
w: word 移至下一个单词的词首
e: 跳至当前或下一个单词的词尾
b: back 跳至当前或前一个单词的词首
行内
0: 绝对行首
^: 行首的第一个非空白字符
$: 绝对行尾
行间
G:文章末尾
3G:第3行 移动到数字对应行
3gg:第3行 移动到数字对应行
gg:文章开头
翻屏
Ctr-f:forward 向下翻一屏
Ctr-b:back 向上翻一屏
Ctr-d: 向下翻半屏
Ctr-u: 向上翻半屏
H head 屏幕顶部
M middle 屏幕中间
L low 屏幕底部
段落移动
{ 上一段
} 下一段
括号切换
在程序中() [] {}的使用频率很高,而且都是成对出现的
% 括号匹配及切换
标记
如果某一段代码需要稍后处理,可使用m增加一个标记,在需要时快速跳转回来或执行其他编辑操作
添加了标记的行如果被删除,标记同时被删除
其他行添加了相同名称的标记,之前添加的标记会被替换掉
mx:mark 添加标记x x是a-z或A-Z之间的任意一个字母
'x:直接定位到标记x所在的位置
选中文本(可视模式)
v 可视模式 从光标位置开始按照正常模式选择文本
V 可视行模式 选中光标经过的完整行
ctrl + v 可视块模式 垂直方向选中文本
扩展:可视模式下,可以和移动命令一起使用 ggVG能够选中所有内容
删除&替换单个字符
x: cut删除光标位置字符
3x:删除光标开始3个字符
r:替换光标位置字符 命令模式
R:替换当前行光标后的字符 替换模式
扩展:d 和 x 类似于图形界面剪切操作
R命令可以进入替换模式,替换完成后,按下ESC键可以回到命令模式
替换命令的作用就是不用进入编辑模式,对文件进行轻量级的修改
删除命令:
d: delete 删除移动命令对应的内容 (和移动命令一起使用)
dw: 删除光标开始位置的字,包含光标所在字
dd: 删除光标所在行,
n dd 删除指定的行数
D: 删除光标后本行所有内容,包含光标所在字符
撤销命令:
u: undo一步一步撤销
Ctr-r: redo反撤销
.: 重复上一次操作的命令
复制粘贴&剪切
y(移动命令) copy 复制
yy: 复制当前行
n yy 复制 n 行
p: 在光标所在位置向下新开辟一行,粘贴
vi中的文本缓冲区只有一个,如果后续做过复制,剪切操作,之前缓冲区的内容会被替换
缩排和重复执行
>> 向右增加缩进
<< 向左减少缩进
. 重复上次命令
在可视模式下,缩排只需要使用一个>或者<
前面的空格越少,代码的级别越高
查找 /str 查找str
查找到指定内容后,使用next查找下一个出现的位置
n:查找下一个
N:查找上一个
如果不想看到高亮显示,可随便查找一个文件中不存在的内容即可
单词快速匹配
* 向后查找当前光标所在单词
# 向前查找当前光标所在单词
5,末行模式
set:设置
set nu 设置行号nu是number的缩写
set nonu 去除行号的意思nonu是nonumber的缩写
查找/
/after
n,N
执行命令
!ls -l
s查找并替换 需要在末行模式下执行
替换操作:
r: 替换当前字符
R: 替换当前行光标后的字符
s/str1/str2/gi
:%s///g 为查找并替换的命令格式
: %s/旧文本/新文本/g 为全局替换的命令格式
:s/旧文本/新文本/g 可视区域替换 要先选中替换文字的范围
: %s/旧文本/新文本/gc 为确认替换的格式 替换时会有提示
y-yes替换 n-no不替换 a-all替换所有 q-quit退出替换
l-last替换最后一个并把光标移动到行首 ^E向下滚屏 ^Y向上滚屏
全局替换
/:临近s命令的第一个字符为边界字符:/,@,#
g:一行内全部替换
i:忽略大小写
-范围:
n:行号
.:当前光标行
+n:偏移n行
$:末尾行,$-3
%:全文
扩展:在实际的开发中,可以使用w这个命令阶段性的备份代码
分屏命令属于末行命令