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: 光标移至当前屏幕显示的最后一行的行首
z+. :滚动屏幕使当前光标所在行处于屏幕中间
z+Enter:滚动屏幕使当前光标所在行处于屏幕顶端
z+-: 滚动屏幕使当前光标所在行处于屏幕低端
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对应文件的目录路径
%<Tab>: 当前完整的文件名
%:t 文件名的尾部.例如../path/test.c就会为test.c
%:r 无扩展名的文件名.例如../path/test就会成为test
%:e 扩展名
sort:按字母顺序排序

插入模式下快捷键

<C-W> 删除光标前的单词
<C-U> 向左删除一句
<C-I> 移动向右移动
<C-Y> 复制上一行当前列对应的字符
<C-D> 向左缩进当前行
<C-T> 向右缩进当前行
<C-H>向左删除一个字符
<C-J>换行

常用的位置标记

自动位置标记

补全:

插入模式下触发补全模式的条件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 #<数字
:f filename – 改变编辑的文件名,这时再保存相当于另存为。

窗口操作

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

:resize num "将窗口的高度调整为num行 n ctrlw  +/-
:vertical resize num "将窗口的宽度调整为num列 n ctrl w >/<

大小写转换

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

排序

:sort 升续排序
:sort! 降序排序
:sort i 升续排序(忽略大小写)
:sort u 升续排序去重
:sort n按照数字而不是字母排序

排版

:le 光标所在行左对齐
:ri 光标所在行右对齐
:ce 光标所在行居中

折叠

折叠方法:
manual  (不常用)默认折叠方法。
indent  (常用)缩进折叠方法,相同的缩进中代码会被折叠。 
syntax  (不常用)语法高亮折叠,在c/c++中会折叠花括号部分,其它格式代码中有的不能自动折叠。 
marker  (常用)标记折叠方法。关闭vim折叠信息不会丢失,而且易用控制和标注。

zR  打开所有折叠
zM  关闭所有折叠
zo  打开光标下的折叠。
zO  打开光标下的折叠,以及嵌套的折叠。
zc  关闭光标下的折叠。
zC  关闭光标下的折叠,以及嵌套的折叠。
za  当光标在关闭折叠上时,打开之。在打开折叠上时,关闭之。
zA  和za类似,不过对当前折叠和其嵌套折叠都有效。

宏录制

qa 把你的操作记录在寄存器 a。
于是 @a 会replay被录制的宏。
@@ 是一个快捷键用来replay最新录制的宏。

示例

在一个只有一行且这一行只有“1”的文本中,键入如下命令:

qaYp<C-a>q→
qa 开始录制
Yp 复制行.
<C-a> 增加1.
q 停止录制.
@a → 在1下面写下 2
@@ → 在2 正面写下3
现在做 100@@ 会创建新的100行,并把数据增加到 103.
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git 配置的最佳实践包括: 1. 设置用户名和邮箱:在使用 Git 提交代码时,会记录提交者的信息。可以使用以下命令设置全局的用户名和邮箱: ``` git config --global user.name "Your Name" git config --global user.email "[email protected]" ``` 2. 设置默认的编辑器:Git 在需要编辑一些文本时会调用默认的文本编辑器。可以使用以下命令设置全局的默认编辑器,比如使用 Vim: ``` git config --global core.editor vim ``` 3. 设置换行符处理:不同操作系统使用不同的换行符,为了避免不必要的换行符问题,可以使用以下命令设置全局的换行符处理方式: ``` git config --global core.autocrlf input ``` 4. 设置忽略文件:在项目中有一些文件是不需要纳入版本控制的,可以使用`.gitignore`文件来指定这些需要忽略的文件。创建`.gitignore`文件并列出要忽略的文件和文件夹。 ``` # 忽略所有 .txt 文件 *.txt # 忽略文件夹 example/ /example/ # 忽略特定文件夹下的所有 .jpg 文件 /images/*.jpg ``` 5. 设置别名:可以为常用的 Git 命令设置别名,以便更快速地使用它们。例如: ``` git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit ``` 6. 设置合并策略:在 Git 合并分支时,可以选择不同的合并策略。可以使用以下命令设置默认的合并策略: ``` git config --global merge.ff only ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值