一、vim的四大模式
1.命令模式
1.1.光标挪动 h j k l ← ↓ ↑ → nh 光标左移n个字符;其它相似 数字0 光标移到以后行首 ^ 光标移到以后行首(第一个非空字符) $ 光标移到以后行尾 G 光标移到以后文件最初一行 gg 光标移到以后文件第一行 nG 光标移到以后文件第n行,1G=gg :n 光标移到以后文件第n行,其实就是切换到末行模式输出n了 H 光标移到屏幕顶部high M 光标移到屏幕中部middle L 光标移到屏幕底部low nH 光标移到屏幕顶部往下数n行,其它相似 w 光标移到下一个字结尾 W 光标移到下一个字结尾(空格宰割的字) e 光标移到下一个字结尾 E 光标移到下一个字结尾(空格宰割的字) b 光标移到前一个字结尾 B 光标移到前一个字结尾(空格宰割的字)
1.2.翻页/滚动
ctrl+f 向下翻一页 forwardctrl+b 向上翻一页 backwardctrl+d 向下翻半页 downctrl+u 向上翻半页 upctrl+e 向下滚动一行ctrl+y 向上滚动一行zEnter 以后行滚动到屏幕顶部zt 以后行滚动到屏幕顶部z. 以后行滚动到屏幕地方zz 以后行滚动到屏幕地方z- 以后行滚动到屏幕底部zb 以后行滚动到屏幕底部
1.3.查找
命令模式下 输出/或?就会进入 查找模式
?pattern 向上搜寻,查找下一个按n即可。其中pattern示意要搜寻的特定字符序列/pattern 向下搜寻
pattern示意要搜寻的字符串,它能够是正则表达式,eg:
/^hello<Enter> #查找以hello开始的串/hello$<Enter> #查找以hello完结的串//^hello<Enter> #查找^hello字符串Vim中应用 \< 和 \> 别离示意单词的结尾和结尾,eg: 按下 / 启动搜寻模式,输出 \<namespaces\>查找字符串namespaces 要查找以后光标笼罩的单词,敲击 * ,Vim会主动启动搜寻模式,光标挪动到该单词下一个现身地位。:noh 勾销查找后果的高亮显示
1.4.编辑
复制(已知的复制办法须要先进入visual模式,y复制所选,d剪切)复制多行 1.命令模式下,光标挪动至想要开始复制的行,输出ma; 2.光标挪动至想要完结复制的行,输出y'a;粘贴 p 粘贴到以后行的下一行撤销/复原撤销 u 撤销 ctrl+r 复原撤销删除 dG 删除全副 dd 删除一行选中 选中一行 1.命令模式下,^让光标挪动至该行行首第一个非空字符; 2.v进入visual模式,$光标挪动至该行行尾; 选中多行 进入VISUAL BLOCK模式后,挪动光标即可选中多行 选中全副 ggvG (gg让光标达到顶部,v进入visual模式,G让光标达到底部)正文 多行正文 0.将光标挪动到要正文的第一行首 1.按ctrl + v进入VISUAL BLOCK模式 2.选中多行(按j、k或高低方向键) 3.按I(大写字母i)在各行首插入 4.输出//或##等正文符号 5.按esc退出VISUAL BLOCK模式(不是ENTER) 勾销多行正文: 0.将光标挪动到要勾销正文的第一行首 1.按ctrl + v进入VISUAL BLOCK模式 2.选中第一行中要删除的正文符号(如//或##等),办法是按小写字母l键或方向右键 3.按字母j、k,或者方向键,选中多行中的全副正文符号 4.按d键删除所有选中的正文符号
2.插入模式
3.末行模式
q! 不保留强制退出wq! 保留后强制退出.,$d 删除全副文本内容
高亮
hi 高亮名称 清单(q退出)match highlight_color /name/ 在代码中高亮标记出name这个变量(name必须用/斜杠包裹/) 应用的计划名称为highlight_colormatch 在同一时刻只能应用一种高亮模式,新的会笼罩旧的match none 勾销高亮2match highlight_color /name/ 同时高亮多个模式
行号
set numberset nuset nonumber 敞开行号
4.VISUAL模式
挪动光标 选中文本y 复制选中的文本 yank拉d 剪切选中的文本G 光标挪动到最初一行排版 缩进 1.挪动光标,选中多行 2.用<或>缩进或缩出
5.其它模式
二、vim配置文件
vim配置文件的门路
redhat下 /etc/vimrc
ubuntu下 /etc/vim/vimrc
set paste
secureCRT会将你原来的文本一成不变的依照字符串的款式发送给服务器。所以当你的服务器上的vim设置为autoindent的i模式下,它会将secureCRT传输而来的这些字符串再进行一下缩进。若你拷贝的文本中曾经有示意缩进的空格或者制表符的话,它们也会被当成字符串,而被缩进。
解决办法:
- 拷贝前,在末行模式下输出set paste (这样的话,vim就不会启动主动缩进,而只是纯拷贝粘贴)
- 拷贝后,在末行模式下输出set nopaste (敞开paste)
附 paste 常识
'paste' 布尔型 (缺省敞开) 全局
{Vi 无此性能}
将 Vim 切换到粘贴模式。可用于从一个窗口剪切或复制文本并粘贴到 Vim。它的应用会防止一些意想不到的成果。设置此选项可用于终端上运行的 Vim,因为那里 Vim 没法区别输出和粘贴的文本。在 GUI 里,Vim 晓得何者来自粘贴,即便不关上 'paste' 也基本上不会做错。对 Vim 能本人解决鼠标点击的终端也是如此。
set number
末行模式下:
set number 显示行号
set nonumber 不显示行号
以上形式开启行号显示只对以后编辑无效,退出编辑后再关上vim则生效。
全局开启/敞开行号显示:
关上配置文件/etc/vim/vimrc增加一行:
set number
set tabstop
关上配置文件/etc/vim/vimrc后,增加一行:
set tabstop=4
“一次tab缩进间隔”设置为“等同于4个字符的间隔”
三、vim奇淫技巧
模式切换
(从命令模式)进入插入模式
i insert (在光标前)插入
I (在以后行首)插入
a append (在光标后)插入
A (在以后行尾)插入
o (在以后行之下新开一行)插入
O (在以后行之上新开一行)插入
r replace
R
s
S
退出插入模式(至命令模式)
Esc
Ctrl+C
Ctrl+[
(从命令模式)进入末行模式
:
(从命令模式)进入VISUAL模式
v
(从命令模式)进入VISUAL BLOCK模式
ctrl + v
退出VISUAL模式(至命令模式)
v或Esc
退出VISUAL BLOCK模式(至命令模式)
ctrl + v
同时关上多个文件
单窗口显示
vi filename1 filename2 filename3
:n 切换到下一个文件(n即next) (此处文件有参数程序,最初一个文件 无 下一个)
:N 切换回上一个文件 (此处文件有参数程序,第一个文件 无 上一个)
:e# 切换回方才编辑的文件 (此处文件无参数程序,只有编辑历史程序)
:e filename在任意文件间切换(无需提前关上)
多窗口显示
办法一:
vi -o file1 file2 file3
办法二:
关上一个文件后,:spfile2,能够间断追加,先开的文件在下后开的在上
ctrl+两次w 或者 ctrl+w而后按高低键 在窗口间切换