【原创】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$ (删除光标到行尾)

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$ (将光标之后至行尾的字符全部删除,同时进入插入模式)

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+[

原文地址:https://www.cnblogs.com/barneywill/p/10643774.html