Linux基础之vi&vim基础篇
一 vi配置文件
~/.vimrc
or
/etc/vimrc
ps:如果使用的是idea中的vim插件,使用的配置文件为 ~/.ideavimrc~~~`s
配置文件中可以修改配色,可以修改键位绑定,可以修改配置,比如
inoremap <C-a> <Home>
inoremap <C-e> <End>
inoremap <C-p> <Up>
inoremap <C-n> <Down>
inoremap <C-b> <Left>
inoremap <C-f> <Right>
colorscheme darkblue
默认配色文件夹:/usr/share/vim/vim74/colors
注意74是版本号
二 模式
三个模式:命令模式、底线命令模式、输入模式
命令模式(Command Mode)
1 上/下/左/右移动光标
h Left
k Up
j Down
l RIght
数字+j|k|h|l 可快速移动数字个字符
2 光标快速移动
G (文件末尾)
1G (文件开头)
gg
10G (跳到第10行的行首)
10gg
:10回车
10回车 (光标向下移动10行)
10j
H (当前屏幕的顶行)
L (当前屏幕的底行)
M (移动光标至屏幕的中间行)
^ (行首,不包含空格,第一个非空白字符,软行首)
0 (数字0,行首,包含空格,第一个字符,硬行首)
$ (行尾)
- (上一行行首,软行首)
+ (下一行行首,软行首)
空格 (向后移动1个字符)
10空格 (向后移动10个字符)
10l (小写的L)
w (移动到下个单词的开头,这里的单词以非字母分隔)
W (移动到下个单词的开头,这里的单词以空格分隔)
e (移动到下个单词的结尾,同上)
E (这里的单词以空格分隔,同上)
ge (反向的e)
b (移动到上个单词的开头,同上)
B (这里的单词以空格分隔,同上)
( (移动到上个句子的开头)
) (移动到下个句子的开头)
{ (移动到上一段,空白行分割)
} (移动到下一段,空白行分割)
Ctrl+g (列出编辑信息,包括文件名、行号、列号等)
>> (缩进,一个tab)
<< (反缩进,一个tab)
f任意字符 (向后移动光标至指定字符)
F任意字符 (向前移动光标至指定字符)
t任意字符 (移动光标至指定字符之前)
T任意字符 (反向移动光标至指定字符之前)
10f任意字符(向后移动光标至指定字符的第10次出现位置)
; (repeat,重复上边的操作,继续移动光标到下一个位置)
, (reverse,返回光标到上一个位置)
3 翻页
Ctrl+b (向上翻一页)
Ctrl+u (向上翻半页)
Ctrl+f (向下翻一页)
Ctrl+d (向下翻半页)
Ctrl+e (屏幕向下滚动,光标位置不变,区别于j)
Ctrl+y (屏幕向上滚动,光标位置不变,区别与k)
4 搜索
/something (向下搜索)
?something (向上搜索)
n 下一个 N 上一个
# (向上选中当前光标所在单词)
* (向下选中当前光标所在单词)
5 删除字符
x (向后删除,Delete)
X (向前删除,Backspace)
10x (向后删除10个字符)
10X (向前删除10个字符)
dw (向后删除1个单词)
10dw (向后删除10个单词)
d^ (删除光标到行首)
d0
d$ (删除光标到行尾)
D
di' (删除''之间的字符)
da' (删除''之间的字符,包含')
di" (删除""之间的字符)
da" (删除""之间的字符,包含")
ci ca (修改)
yi ya (复制)
dd (删除当前行)
dj (删除下一行)
dk (删除上一行)
d10d (删除10行)
10dd (删除10行)
dG (删除光标所在行到最后一样)
d1G (删除光标所在行到第一行)
6 可视化复制粘贴
V (可视行模式,块选择模式,然后上下移动光标直到选中所需行)
v (可视模式,然后左右移动光标直到选中所需字符)
y (复制所有选中字符)
d (剪切所选中字符)
p (将选中的文本粘贴到光标下一行)
P (将选中的文本粘贴到光标上一行)
7 复制
yy (复制整行)
Y
10yy (复制10行)
yw (复制下一个单词)
10yw (复制下10个单词)
yG (复制当前行到最后一行)
y1G (复制当前行到第一行)
y0 (复制当前光标至行首)
y^
y$ (复制当前光标到行尾)
以上剪切和复制只能在vi内结合p使用,如果想在其他应用中粘贴,需要复制到剪贴板,命令如下:
"*yG (全选复制)
8 undo&redo操作
u (undo 恢复到编辑前的状态)
U (undo 恢复上一次操作,再按一次则重复上一次操作)
. (redo 重复执行上一命令,比如dw)
9 临时挂起和返回
Ctrl+z (挂起)
fg (返回)
10 标记
m任意字符 (标记光标当前位置为任意字符)
`任意字符 (快速返回标记)
'任意字符 (快速返回标记行的行首)
:delmarks 任意字符 (取消标注)
底线命令模式(Last Line Mode)
命令模式输入:进入底线命令模式,删除:或者命令执行完返回命令模式
1 显示行号或取消
:set number
:set nonumber
or
:set nu
:set nonu
2 自动缩进
:set ai
or
:set autoindent
3 智能缩进
:set si
or
:set smartindent
4 粘贴时取消自动缩进
:set noai nosi
or
:set paste
5 文本替换 a->b
:%s/a/b/g (全部行)
:s/a/b/g (当前行)
:1,5s/a/b/g (1-5行)
:1,5s/^/#/b (1-5行添加注释)
另一种方式,在vim下
1)Ctrl+v (进入块选择模式)
2)j (移动光标选中1-5行)
3)I (大写i,进入行首输入)
4)# (输入注释字符)
5)Esc (两次,退出块选择模式,同时在1-5行行首增加注释字符)
6 将文件格式修改为unix
:set fileformat unix
7 保存&退出
:w (保存)
:q (退出)
:q! (丢弃修改退出,等于ZQ)
:wq (保存并退出,等于ZZ)
8 临时执行命令
:! some command (临时执行 some command)
9 剪切
:x,yd (将x到y行剪切)
:x,y m z (将x到y行移动到z行之后)
10 vim配色
:colorscheme (查看当前配色)
:colorscheme darkblue (修改配色,永久修改需要修改.vimrc)
11 其他
:h (帮助)
:e filename(打开另一个文件)
:new (打开新文件)
:sav filename(另存为)
:sp [filename] (打开另一个文件,同时上下分屏)
:vsp [filename] (打开另一个文件,同时左右分屏)
:q (退出分屏)
Ctrl+w h|j|k|l (光标在分屏之间移动)
输入模式(Insert Mode)
从命令模式开始
1 插入字符
i (在光标后插入)
I (在行首插入)
a (在光标后追加)
A (在行尾追加)
o (从当前位置插入换行同时在换行后开始插入字符)
O (从当前位置插入换行同时在换行前开始插入字符)
r (替换当前1个字符,替换之后返回命令模式)
R (进入替换模式)
c0 (将光标之前至行首的字符全部删除,同时进入插入模式)
c$ (将光标之后至行尾的字符全部删除,同时进入插入模式)
C
cc (删除当前行,同时进入插入模式)
cw (删除光标后一个单词,同时进入插入模式)
2 进入输入模式后
Ctrl+w (向左删除1个单词)
Ctrl+u (向左删除至行首)
Ctrl+h (向左删除1个字符)
Ctrl+t (在行首增加缩进)
Ctrl+d (在行首删除缩进)
Ctrl+a (插入上次插入的内容)
Ctrl+@ (插入上次插入的内容并结束插入模式)
Ctrl+o (暂时返回命令模式,执行一个命令后返回输入模式,避免来回切换模式)
Ctrl+u (恢复上次的修改)
vi进入输入模式后,快捷键少的可怜,比如移动光标,虽然可以通过Ctrl+o,还是不如emacs方便,不过好消息是可以在vi里绑定emacs的快捷键
# vi .vimrc
inoremap <C-a> <Home>
inoremap <C-e> <End>
inoremap <C-p> <Up>
inoremap <C-n> <Down>
inoremap <C-b> <Left>
inoremap <C-f> <Right>
以上会绑定Ctrl+aepnbf等快捷键,可谓双剑合璧
3 返回命令模式
Esc
Ctrl+c
Ctrl+[
---------------------------------------------------------------- 结束啦,我是大魔王先生的分割线 :) ----------------------------------------------------------------
- 由于大魔王先生能力有限,文中可能存在错误,欢迎指正、补充!
- 感谢您的阅读,如果文章对您有用,那么请为大魔王先生轻轻点个赞,ありがとう