Linux之Vim

26 篇文章 1 订阅
12 篇文章 0 订阅

        Vim是Linux上著名的文本编辑器,它是早年的Vi编辑器的加强版。gVim是Vim的图形前端,它是跨平台的编辑器,基本上主流的操作系统上面都有它的版本。gVim是一个国际版本,会根据安装的平台自动选择相应语言包,支持中文及其各种编码,连界面也是中文的,在Linux Mint 12软件管理器中, gVim被叫做vim-gnome。

       Vim一般会有全局配置和用户配置。全局配置文件目录可以在打开vim之后在命令行模式输入:echo $VIM查看,用户配置文件目录可以在打开vim之后在命令行模式输入:echo $HOME查看配置文件。配置文件名为.vimrc,内容如下:

set ts=4
set expandtab
set autoindent
set backspace=indent,eol,start
set ruler

set shiftwidth=4

 

Vim键盘图:

一、vi参数说明:

文件打开或关闭方法
vi +n 【file】n为数字,“+”也需输入,使用vi打开文件并将光标移到第n行
vi + 【file】n为数字,“+”也需输入,使用vi打开文件并将光标移到最后一行
vi +/pattern 【file】pattern为正则表达式,“+”也需输入,使用vi打开文件并将光标移到匹配pattern的第一处地方
vi -R 【file】使用vi只读打开文件
vi -d 【file1】【file2】【file3】...【filen】使用vi对比模式(diff)打开n个文件
vi -o 【file1】【file2】【file3】...【filen】使用vi水平窗口打开n个文件
vi -O 【file1】【file2】【file3】...【filen】使用vi垂直窗口打开n个文件
【Ctrl】z使vim在后台运行
fg当vim在后台运行时可将vim重新唤起

二、命令模式:

        用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。常用命令:

        1、切换到输入模式:

切换到输入模式的方法
i(insert)在当前字符的左侧插入
I在当前行首字符(非空白字符)的左边插入
a(append)在当前字符的右侧插入
A在当前行尾字符的右边插入
o在下一行插入
O在上一行插入
s(substitute)删除当前字符然后进入插入模式
S删除当前行然后进入插入模式

        2、切换到命令行模式:

切换到命令行模式的方法
:切换到命仅行模式

        3、vim切到后台运行,回到sh:

vim切到后台运行的方法
【Ctrl】z将vim在后台运行

        4、光标行内移动:

光标行内移动的方法
h 或 向左箭头键【←】光标向左移动一个字符
l 或 向右箭头键【→】光标向右移动一个字符
fxx为任意字符,移动光标到当前行的下一个字符x处
Fxx为任意字符,移动光标到当前行的上一个字符x处
txx为任意字符,移动光标到当前行的下一个字符x左边的位置
;重复上面的移动
,反方向重复上面的移动
0 或 功能键【Home】移动光标到当前行行首
^移动光标到当前行第一个非空白字符处
$ 或功能键【End】移动光标到当前行行尾
n【Space】n为数字,按下数字后再按空格键,光标会向右移动这一行的n个字符。例如20【Space】则光标会向后面移动20个字符距离

        5、光标跨行跳转:

光标跨行跳转的方法
j 或 向下箭头键【↓】光标向下移动一个字符
k 或 向上箭头键【↑】光标向上移动一个字符
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30【↓】" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!
%光标跳转到配对的括号
[[移动光标到上一个行首是{的行
]]移动光标到下一个行首是{的行
w移动光标到下一个词的头部,以标点和空白分隔
W移动光标到下一个词的头部,以空白分隔
e移动光标到当前词或下一个词的尾部,以空白分隔
b移动光标到当前词或上一个词的头部,以空白分隔
''两个单引号,移动光标到光标上次停靠的地方
gd移动光标到当前光标所在处函数或变量定义的地方
gd跳转到相应的头文件(可通过:set path+=xxx来添加头文件目录xxx)
K在man里查找当前光标所在处的词
【Ctrl】b屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
【Ctrl】f屏幕『向下』移动一页,相当于 [Page Down] 按键 (常用)
【Ctrl】u屏幕『向上』移动半页
【Ctrl】d屏幕『向下』移动半页
【Ctrl】y屏幕『向上』移动一行
【Ctrl】e屏幕『向下』移动一行
gg移动到文件的第一行,相当于 1G 啊! (常用)
G移动到文件的最后一行(常用)
nGn为数字,移动到文件的第n行。例如 20G 则会移动到文件的第20行,相当于命令行模式下的:n
n|n为数字,移动到当前行的第n列
H光标移动到当前屏幕第一行行的第一个字符
nHn为数字,光标移动到当前屏幕第一行开始数向下的n行的第一个字符
M光标移动到当前屏幕中间行的第一个字符
L光标移动到当前屏幕最后一行的第一个字符
nLn为数字,光标移动到当前屏幕最后一行开始数向上的n行的第一个字符
*移动光标到下一个光标所在位置的词出现的位置
#移动光标到上一个光标所在位置的词出现的位置
【Shift】{移动光标到上一个空行
【Shift】}移动光标到下一个空行
n%n为数字,光标移动到文件内容的%n处
n【Enter】n 为数字。光标向下移动n行(常用)
zz如果光标所在的行之前的行足够撑满半屏幕,那么让光标所在的行居于屏幕中心
zt让光标所在的行居于屏幕第一行(top)
zb如果光标所在的行之前的行足够撑满一屏幕,让光标所在的行居于屏幕最后一行(bottom)
z【Enter】使当前行成为屏幕首行
z.使当前行成为屏幕中间行
z-使当前行成为屏幕尾行

        6、搜索和统计:

搜索和统计的方法
/pattern从当前位置以下搜索匹配pattern的内容
?pattern从当前位置以上搜索匹配pattern的内容
n在同一方向重复上一次搜索命令
N在反方向上重复上一次搜索命令
【Ctrl】g文件行数和当前位置占总行数的百分比
g【Ctrl】g文件列数、行数、单词数、字符数和字节数统计

        7、编辑:

编辑的方法
x剪切光标所在处的字符
nxn为数字,剪切光标所在处之后的n个字符
X剪切光标所在处之前的一个字符
nXn为数字,剪切光标所在处之前的n个字符
dd剪切光标所在的那一整行(常用)
cc剪切光标所在的那一整行并进入编辑模式
nddn为数字,剪切光标所在行(包括当前行)下的n行
dnGn为数字,剪切从第n行(从1开始计数)到光标所在行之间的所有行,包括第n行和光标所在行
dG剪切从光标所在行到最后一行的所有行,包括光标所在行和最后一行
d$剪切光标所在字符(包括当前字符)之后的光标所在行的字符
d0剪切光标所在字符(不包括当前字符)之前的光标所在行的字符
dw剪切光标所在的当前词
D删除从当前光标位置到行尾
C删除从当前光标位置到行尾并进入编辑模式
yy复制当前行
nyyn 为数字。复制光标所在的向下n行,例如 20yy 则是复制 20 行(常用)
ynGn为数字,复制从第n行(从1开始计数)到光标所在行之间的所有行,包括第n行和光标所在行
yG复制从光标所在行到最后一行的所有行,包括光标所在行和最后一行
y0复制光标所在字符(不包括当前字符)之前的光标所在行的字符
y$复制光标所在字符(包括当前字符)之后的光标所在行的字符
p将已复制的行粘贴在光标所在行的下一行/将已复制的一个字符粘贴在光标所在字符之后
P将已复制的一行粘贴在光标所在行的上一行/将已复制的一个字符粘贴在光标所在字符之前
J将光标所在行与下一行的数据结合成同一行 ,中间用空格分开
gJ将光标所在行与下一行的数据结合成同一行 ,中间无空格
u撤销前一个动作(常用)
【Ctrl】r将撤销的动作重新执行(常用)
这个 u 与 【Ctrl】r 是很常用的指令!一个是撤销,另一个则是重做一次~
.就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)
r切换到单字符替换,输入的字符将替换光标所在处的字符,替换后回到命令模式
R切换到替换模式,输入的字符替换光标所在处的字符,可替换多次
''a两个单引号,接下来的yank或paste操作使用使用寄存器a
~如果是大写则转换成小写,如果是小写则转换成大写
g~iw当前词转换大小写
gUiw当前词转换为大写
guiw当前词转换为小写
gU[Enter]当前行转换为大写
gu[Enter]当前行转换为小写

        8、其他:

编程相关方法
ctrl-p上一个补全
ctrl-n下一个补全
ctrl-e停止补全并回到原来录入的文字
ctrl-y停止补全,并接受当前所选的项目
>>右移本行
<<左移本行
==缩进本行
:!cmd执行shell命令
:r!date将当前时间插入
gg=G格式化整个文件
zf生成折叠
zo打开光标下的折叠
zO循环打开光标下的折叠,也就是说,如果存在多级折叠,每一级都会被打开
zc关闭光标下的折叠
zC循环关闭光标下的折叠
[z到当前打开折叠的开始
]z到当前打开折叠的结束
zj向下移动到下一个折叠的开始处
zk向上移动到上一个折叠的结束处
标记和宏
ma在当前光标的位置标记一个标记,名字为a
'a单引号,到书签a处
'.到上次编辑文件的地方
:marks查看标记列表
:delmarks可以删除指定标记
qa开始录制宏a,按下q结束录制
@a执行宏a
多窗口
ctrl-w ssplit window
ctrl-w vsplit window vertically
ctrl-w wswitch window
ctrl-w qquit a window
多标签
:tabe filenameedit file in new tab
gtnext tab
gTprevious tab
:tabrfirst tab
:tabllast tab
:tabm nmove current tab after tab n

三、编辑模式:

        1、常用命令:

切换到命令模式的方法
Esc退出编辑模式,切换到命令模式
Insert切换光标为插入/替换模式,光标将变成竖线/下划线

四、命令行模式:

        1、切换到命令模式:

切换到命令模式的方法
Esc退出命令行模式,切换到命令模式

        2、系统设置和查看:

系统设置和查看的方法
:set查看当前vim设置
:set all查看所有可设置属性
:set nu显示行号
:set nonu取消显示行号

        3、行选择:

行选择的方法
:nn为数字,指定第n行
:m,n从m行到n行,包括m行和n行
:.当前行
:$最后一行
%每一行
:/pattern/匹配pattern的第一行

        4、编辑:

编辑常用命令
:w(write)保存
:wa全部保存

:q(quit)

退出
:qa全部退出
:x保存并退出
:xa全部保存并退出
!强制执行指定指令
:e!撤销掉所有未保存的改动
:xmyx,y是数字,将第x行的内容移动到第y行
:xcoyx,y是数字,将第x行的内容复制到第y行后
:xtyx,y是数字,将第x行的内容复制到第y行后
:w 【file】将当前数据另存为文件
:nw【file】n是数字,将第n行内容另存为文件
:nw>>【file】n是数字,将第n行内容追加到文件
:r 【file】将文件的内容追到到当前文件光标后
:nr 【file】n是数字,将文件的内容追到到当前文件第n行后
:s/old/new/g在当前行中将old替换为new,g表示global,替换当前行的所有匹配
:m,ns/old/new/g在m到n行中进行替换
:%s/old/new/gc全文替换,c表示confirm,需要确认替换操作
:!command暂时离开vi到指令行模式下执行command

五、可视化模式:        

        1、常用操作:

常用操作
v

进入visual字符可视化模式,操作的最小单位是一个字符,再按一次退出

V进入visual行可视化模式,操作的最小单位是一行,再按一次退出

【Ctrl】v或

【Ctrl】V

进入visual块可视化模式,相当于列选择模式,再按一次退出。在Windows中,【Ctrl】v可能已经被映射为粘贴操作,可以使用【Ctrl】Q进入块可视化模式。
o在visual模式下,在已选中的区域内对角线的字符交替选中
O在visual模式下,在已选中的区域内同一行的首末字符交替选中
~在visual模式下,将已选中的文本大写转为小写,小写转为大写
U在visual模式下,将已选中的文本转为大写
u在visual模式下,将已选中的文本转为小写
<在visual模式下,左移所选区域
>在visual模式下,右移所选区域
=在visual模式下,格式化所选区域
:在visual模式下,对选中的区域进行操作
:sort在visual模式下,对选中的文本进行排序

        2、修饰符:

i 和 a 修饰符
i

内部

a周围

iw

单词内(不包括单词周围的空格)
aw单词周围(包括单词周围的空格)
i<选择一对“<>”中的所有字符
i{选择一对“{}”中的所有字符
i[选择一对“[]”中的所有字符
i(选择一对“()”中的所有字符
it选择一对html标签内部的所有字符
i"选择一对双引号中的所有字符
i'选择一对单引号中的所有字符
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值