Vim 学习笔记

1.打开文件
vim filename 直接使用vim命令打开一个文件。
q! / quit! 强制退出
ZZ  保存文件为常规的Unix文件
ls  列举出当前目录下的文件
w   写入文件,但是不退出vim
wq  写入文件并离开vim,与ZZ类似
 
e! / q! 退出vim编辑器,不保存编辑结果


w! filename 强制覆盖现有文件
!rm filename 删除文件

2. 移动光标
h, j, k, l
对应与向左移动一个字符,向下移动一行,向上移动一行,向右移动一个字符。
0  移到一行的开头
$  移到一行的结尾
w / b  移动一个单词,向后/向前
G  移动到一个特定的行,1G 移动到第一行

+  下一行的第一个字符
-  上一行的第一个字符
e / E  到单词的结尾

vim的移动命令
Ctrl+End  移动到文件的末端
Ctrl+Home 移动到文件的第一行,第一个非空字符
count%    移动到文件%n的地方,50% 移动到文件的中间位置





4. 编辑命令
简单的编辑命令:
i  表示插入,在光标当前位置开始插入
a  表示追加,在当前光标之后的一个位置开始
c  表示更改,
d  表示删除,


A  在一行的结尾处附加文本
I  在一行的开头处插入文本
o  在光标所在位置的下一行打开新行
O  在光标的上一行打开新行
s  删除光标所在位置的字符后,再替换文本
S  删除一整行后,再替换文本
R  用新的字符覆盖现有的字符


c 命令:
cw  从光标到这个单词结尾,修改
c2b 从光标往前的两个单词
c$ / C  从光标到行结尾
c0  从光标到行的开头

cc  会将一整行换成任何输入的文本。它删除原来的行。

r  修改当前的字符,修改后直接回到命令行模式
修改字符,如将|| 替换为 && 可以输入 2r& 
R  进入整行的覆盖模式,直到按Esc为止

s  修改几个字符 3s 删除当前光标及之后两个字符,进入插入模式
S  删除整行,并在行其实位置进入插入模式

~  将当前的文本变为大写

dw 删除光标到本单词的结尾处
dd 删除当前行  2dd 删除两整行
db 删除光标到单词开始处
d$ / d0 删除光标到行末/行起始位置
D  删除光标到行的结束所有的内容

x  删除一个字符  3x 删除三个字符

u  只会撤销最近一次命令
p  恢复最近几次的删除动作,vim保存了最近9次的动作 3p
恢复缓冲区的第三个

复制、剪切与粘贴:
dd  删除一整行,p 将删除的行粘贴到光标所在行的下一行
x p 可以将两个字符对调
y 复制命令   yw复制一个单词,y$复制光标到行末  4yy 复制4行内容
Y 和yy的功能相同(D,C的功能和 dd,cc功能不同)



. 用于重复上一条命令



J  用于将当前行 和下一行 合并
[++ 
注释:
(command)(number)(text object) 或者相等的模式
(number)(command)(text object)

命令+数字+文本对象 

3k 向上移动三行 / d3 删除当前行及其之后两行,共三行
--]  



5. 高级移动命令
滚动:
Ctrl+F   往前滚动一整屏
Ctrl+B   往后滚动一整屏
Ctrl+D   往前滚动半屏幕
Ctrl+U   往后滚动半屏幕


z Enter 将光标移动到屏幕顶端,并滚动屏幕
z . 将光标移动到屏幕中心,并滚动屏幕
z - 将光标移动到屏幕底端,并滚动屏幕

200z Enter  会将200行移动到屏幕顶端

H  移动到屏幕顶端的行
M  移动到屏幕中央的行
L  移动到屏幕底端的行

nH 移动到屏幕往下的第n行
nL 移动到屏幕底端网上的第n行

Enter 移动到下一行的其实位置
+  移动到下一行的第一个字符
-  移动到上一行的第一个字符
^  移动到当前行的第一个非空格处
n| 移动到当前行的第n列

e  移动到单词的结尾
E  移动到单词的结尾,忽略标点符号
(  移动到当前句子的开头
)  移动到下一个句子开头
{  移到当前这一段开头
}  移到下一段的开头

[[ 移到本节的开头
]] 移到下节的开头

搜索:
/  搜索命令,向后搜索,/pattern  pattern可以是一个完整单词,或字符串
?  向前搜索,用法和 / 相同

n  向同一个方向重复搜索
N  向相反的方向重复搜索
/Enter 往前重复搜索
?Enter 往后重复搜索

G(转至)命令
100G  转到文本的一百行。
``    回到移动前的位置
''    回到移动前位置所在行,行首位置

6. :set option 命令
:set all 列举出所有的选项
:set autoindent  设置自动缩进缩进
:set shiftwidth=4 设置shiftwidth与制表符 tabstop 距离相同
:set tabstop=4    设置制表符 tab为4个字符


set nu 设置行号
set wm / wrapmargin  设置自动换行的宽度


7. 编程
特殊的搜索命令:
( [ { < 这几个称为开括号,当光标位于任何一个开括号时,按下
%键可以将光标移到成对的闭括号上。同样,位于闭括号时,也可以回到开括号。

折叠命令:
zA  递归切换折叠状态
zC  递归关闭折叠
zD  递归删除折叠

zE  去除所有的折叠
zf  创建折叠,从当前的行开始到光标移动后到达的结束位置
countzF 创建涵盖count行的折叠,从当前行开始

zM  设置foldlevel 选项为0
zN,zn 设置 复位(zn) foldenable

zo  递归打开折叠
za  切换一个折叠的状态
zd  删除一个折叠
zc  关闭一个折叠
zj,zk 移动到下一个折叠开始的地方(zj),前一个折叠的结尾处(zk)
zo  打开一个折叠

C/C++中折叠
将光标放在( { 或 }) 上,输入zf%,将其中的内容折叠。
zfgg  将光标到文件开始处的内容折叠。



自动智慧缩进:
:set cindent  可以理解C语法,

关键字补全:
:help compl -generic / :help 'complete' / :help ins-completion 
调出自动补全的功能。

Ctrl-N  Ctrl-P 在当前缓冲区 查找以光标前关键字开始的单词。


Ctrl-X Ctrl-L  整行补全
Ctrl-X Ctrl-N  根据当前文件里关键字补全
Ctrl-X Ctrl-K  根据字典补全
Ctrl-X Ctrl-T  根据同义词字典补全
Ctrl-X Ctrl-I  头文件内关键补全
Ctrl-X Ctrl-J  根据标签补全
Ctrl-X Ctrl-F  补全文件名
Ctrl-X Ctrl-D  补全宏定义

Ctrl-x Ctrl-o  调用omnifunc定义的函数
在全能补全中,Ctrl-X / Ctrl-N 用于选择。不需要回车。
Ctrl-x Ctrl-u  调用completefunc定义的函数


:imap Tab <C-P>
将tab映射为补全键。在tab键前后输入Ctrl+v就可以输入tab键了。




语法的高亮:
:syntax enable
:syntax on

:highlight comment  以高亮显示一个单词



8.Vim多窗口的功能
vim -o file1 file2  -o 命令指明使用多窗口的方式打开两个文件
-o 后添加数字, vim -o5 file1 file2 将vim分割为5个窗口,前两个打开文件




:split  创建新的窗口(水平分割),两个窗口均显示相同的文件内容
:vsplit 创建垂直分割的窗口
:split otherfile  则在新的窗口中打开 otherfile

:[n]split [++opt] [+cmd] [file] 完整的split命令形式
n    为Vim指定新窗口显示的行数
opt  为Vim新窗口传递选项信息 前面要加两个 加号
cmd  传入欲在新窗口中执行的命令,前面必须加一个加号
file 在新窗口中编辑的文件

new / vnew  命令与split / vsplit含义类似

sview filename  新建窗口以只读方式 打开文件
sfind [++opt] [+cmd] filename 搜索文件,找到则建立新窗口打开文件


窗口之间切换:
Ctrl+W Down / Ctrl+W j 切换到下一个窗口
Ctrl+W Up / Ctrl+W k   切换到上一个窗口
Ctrl+W Left / Ctrl+W h 切换到当前窗口的左边窗口
Ctrl+W Right / Ctrl+W l切换到当前窗口右边的窗口

Ctrl+W t / Ctrl+W Ctrl+t 切换到左上角的窗口
Ctrl+W b / Ctrl+W Ctrl+b 切换到右上角的窗口
Ctrl+W 在窗口之间切换
Ctrl+W p 移动到前一个访问窗口


Ctrl+W r 向右或向下方轮换窗口,Ctrl+W R,轮换方向相反。
(注意这个不是在窗口之间切换,而是移动窗口位置)
Ctrl+W x 向右或向下方轮换窗口,Ctrl+W X,轮换方向相反。

分页编辑:
创建多个分页,tab。
:tabnew filename
在新的分页打开并编辑新文件,不指定文件则打开一个空的tab。
:tabclose 关闭当前的分页
:tabonly 关闭其他的所有分页,除非文件被修改了,没有设置 autowrite。

quit 离开窗口
close 关闭窗口
hide 隐藏窗口


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值