微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vim最佳实践总结

最合理的设置,编辑~/.vimrc,内容如下:

#设置显示行号
:set number
#设置自动缩进
:set cindent
#设置tab宽度为4
:set tabstop=4
:set shiftwidth=4
#关闭与vi的兼容模式可以增加很多功能
:set nocompatible
:set cursorline
#激活增量查找功能 
:set incsearch
#激活查找高亮
:set hlsearch

#设置自动补全括号、引号
inoremap ' ''<ESC>i
inoremap " ""<ESC>i inoremap ( ()<ESC>i inoremap [ []<ESC>i inoremap { {<CR>}<ESC>O 

普通模式下常用并且很好用的快捷键:

h:向左移动光标
l:向右移动光标
j:向下移动光标
k:向上移动光标
$:光标移到行尾
0:光标移到行首
^:光标移到行首第一个非空字符

gj:向下移动光标(针对显示display line)
    注意理解显示行的概念,如果一行太长会自动换行显示为多行,
    但本质上还是属于同一行,行号是一样的
    这种显示为多行的行被称为显示gk:向上移动光标(针对显示display line)
g$:光标移到行尾(针对显示display line)
g0:光标移到行首(针对显示display line)
g^:光标移到行首第一个非空字符(针对显示display line)

w:光标定位到下一个单词的第一个字符上 注:对于中文,连续的多个汉字作为一个word。
W:移动光标到下个字串的开始
b:移动光标到上一个单词的词首
B:移动光标到上一个字串的词首
e:移动光标到单词的词尾
ge:移动光标到上一个单词的词尾
E:移动光标到字串的结尾

gg:定位到文件结尾
shift+gg:定位到文件开头

a:进入编辑模式,并且光标定位到当前字符之后
i:进入编辑模式,并且光标定位到当前字符之前
A:光标定位至行尾,并且进入编辑模式
I:光标定位至行首,并且进入编辑模式
c{motion}:例如,ciw删除当前光标所在单词并进入编辑模式
C:相当于c$,删除光标所在位置到行尾的所有内容,并且进入编辑模式
cc:删除当前行并进入编辑模式
o:在当前行的下面另起一行,并变为编辑模式
O:在当前行上面另起一行,变为编辑模式
s:相当于cl,删除当前光标所在字符并进入编辑模式
S:相当于cc,删除当前行并进入编辑模式
x:删除光标所在位置的字符
X:删除光标前面的一个字符
d{motion}:例如,diw删除当前光标所在单词,daw删除光标所在单词并且删除到下一个单词开头之前的所有空格
dd:删除一行
D:相当于d$,删除当前光标到行尾的所有内容
dgg:删除当前位置到文件末尾
yy:复制一行
nyy: 复制n行
p:对复制的行进行粘贴
J:删除换行符,使下一行并上来。     
nJ:连接后面的n行

u:撤销上一次操作
uu:撤销所有修改
ctrl+r:对撤消的撤消

vim:选中光标所在位置的一个单词
"g" + "d":高亮显示光标所属单词,"n" 查找!

shift+h: 光标移至当前屏幕显示首行的行首
shift+m: 光标移至当前屏幕显示的中间行的行首
shift+l: 光标移至当前屏幕显示的最后一行的行首

zz:光标所在行移动到窗口的中间
ctrl+e: 屏幕向下滚动一行
ctrl+y: 屏幕向上滚动一行
ctrl+d: 屏幕向下滚动半屏
ctrl+u: 屏幕向上滚动半屏

ctrl+a: 如果光标不在数字上,光标就定位到当前行的向右查找的第一个数字上并加1,
        如果光标位于数字上,数字加1
ctrl+x:如果光标不在数字上,光标就定位到当前行的向右查找的第一个数字上并减1,
        如果光标位于数字上,数字减1
!{motion} :跳转到命令行模式并且在命令行中提前输入{motion}指定的范围([range]).
            例如: !G会跳转到命令行模式,并且在命令行提前输入 .,$! 
q: :进入命令历史列表窗口
q/ :进入查找历史列表窗口
<C-w>s :水平分割窗口
<C-w>v :垂直分割窗口
{N}gt :切换到第N个标签gt:切换到下一个标签gT:切换到上一个标签

普通模式下查找行内字符

f{char} 正向移动到下一个{char}所在之处
F{char} 反向移动到下一个{char}所在之处
t{char} 正向移动到下一个{char}所在之处的前一个字符上
T{char} 反向移动到下一个{char}所在之处的后一个字符上
;       重复上次的字符查找命令,反转方向查找上次的字符查找命令

命令模式下的常用命令

wa:保存所有的文件
qa:退出所有文件
<C-r><C-w>:复制当前单词到命令行中
<C-r><C-a>:复制当前字符串到命令行中
<C-f>:打开命令历史列表窗口
read !{cmd} :执行cmd命令,并把标准输出内容写入到光标的所在的下一行
[range]write !{cmd} :执行cmd命令,并把range指定的行作为标准输入
cd: 改变vim的当前工作路径
%:h<Tab> :自动输入当前buffer对应文件目录路径

常用的位置标记

补全:

插入模式下触发补全模式的条件ctrl+p ctrl+n

特殊问题:

1,向vim编辑的文件内黏贴带有换行符的内容时,会多出来一个换行,
    解决办法是在命令模式下设置 :set paste
2,Ctrl+s 在vim下作用为锁定屏幕,解锁按 Ctrl+q 就可以了

vim 多文件查找:

这个vim内置命令就是vimgrep,有两种基本的使用方式:
:vim[grep][!] /{pattern}/[g][j] {file} 。。。
:vim[grep][!] {pattern} {file} 。。。

file部分支持通配符,* 代表当前目录,** 代表当前目录及其子目录(递归),
比如*/*.c代表当前目录下的c源程序文件, **/*.c代表当前目录及其递归子目录下的所有源程序文件file部分可以指定多次。

以下命令查看匹配结果:
:cn[ext] 下一个结果
:cp[revIoUs] 上一个结果
:cw[indow] quickfix窗口,结果文件列表

使用vim进行注释:

多行注释:
1. 进入命令行模式,按ctrl + v进入 visual block模式,然后按j, 或者k选中多行,把需要注释的行标记起来
2. 按大写字母I,再插入注释符,例如//
3. 按esc键就会全部注释了

取消多行注释:
1. 进入命令行模式,按ctrl + v进入 visual block模式,
 按字母l横向选中列的个数,例如 // 需要选中2列
2. 按字母j,或者k选中注释符号
3. 按d键就可全部取消注释

最近打开的文件

很多文件编辑器都可以获取最近打开的文件,然后打开它,
vim也可以,就是在执行vim的前面加一个感叹号
!vim
查看最近打开过的文件命令行中输入
:ol
ol是oldfiles的缩写。

如果这个在你的vim中不工作,你可以尝试
:bro ol
:browse oldfiles
结果中每个文件对应一个数字。

直接打开最近打开的任何文件,从上面得到文件对应的数字后,使用下面的命令打开文件:e #<数字

窗口操作

CTRL-W -    高度减小
CTRL-W +    高度增加
CTRL-W <    宽度减小
CTRL-W >    宽度增加
CTRL-W c    关闭当前窗口
CTRL-W o    关闭所有不活动窗口
CTRL-W T    当前窗口移到一个新的标签页中打开

大小写转换

~          将光标下的字母改变大小写
3~         将光标位置开始的3个字母改变其大小写
g~~        改变当前行字母的大小写
U          将可视模式下选择的字母全改成大写字母
u          将可视模式下选择的字母全改成小写
gUU        将当前行的字母改成大写
3gUU       将从光标开始到下面3行字母改成大写
guu       将当前行的字母全改成小写
gUw       将光标下的单词改成大写。
guw       将光标下的单词改成小写。

原文地址:https://www.jb51.cc/vim/390574.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐