vi常用操作
回复
现在是70%的时间用Windows,还有不少时间必须和vi打交道,不记录一下常用的vi操作实在是伤不起,记不清。
vi的两种模式切换:
- 按Esc进入命令模式,可以在命令模式下进行保存,退出,查找,替换,复制,粘贴,删除行,恢复(undo),打开新文件,显示行号等操作
- 按i或者a进入编辑模式,可以输入字符,可以用delete与backspace删除字符(i表示insert,a表示add/append)
在vi的配置文件~/.vimrc里加上syntax on(echo "syntax on" >> ~/.vmirc
)就可以支持文件的语法高亮显示,一般缺省都至少有shell,php,python,c等语言的语法高亮支持。如果这个不起作用,可能还要再加上一行syntax enable。
不过有时候你需要手工添加语法高亮文件,例如我就需要添加markdown的语法高亮,操作是这样的:
- 修改/usr/share/vim/vim#/filetype.vim文件(其中#表示你的vim版本号,如73),找到对应的行,为文件添加上后缀与文件类型的对应,例如我给markdown添加的关联规则在maple与map类型后面,代码如下:
" Markdown au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.md setf markdown
- 将这个markdown的语法高亮文件下载回来,复制到/usr/share/vim/vim#/syntax目录下即可
- 如果某些文件是markdown文件,但是后缀比较少见,可以在vim的命令模式下
:set filetype=markdown
让vim以markdown的语法高亮模板来处理它
下面是命令模式下的操作键组合:
- $:光标移到当前行的末尾
- ^:光标移到当前行的开头
- *:在文件中查找光标当前所在的词
- %:查找对应的另一半括号
- x:删除一个字符
- dd:删除当前行
- dw:删除一个单词
- dnd:从当前行开始删除n行
- u:恢复上一次的修改操作,即Undo
- :w:保存
- :q:关闭当前文件,如果只有一个文件则退出。
- :q!:放弃所有的修改,关闭当前文件
- :set nu:显示行号,也可以写全,即:set number
- :set nonu:不显示行号
- :n:跳转到第n行
- /word:在文件中查找word这个字符串,这里word也可以是正则表达式
- n:在文件中继续查找字符串
- :tabnew filename:在新的Tab里面打开filename文件
- :tabn:切换到下一个Tab
- :tabp:切换到上一个Tab
复制粘贴的操作是这样的,首先进入命令模式,然后在待复制文本开始的地方按v,接着移动到待复制文本结尾的地方按y,最后到需要粘贴文本的地方按p即可。
如果在上面第二步的时候不按y,而是按x的话,那就是剪切,而不是复制了。
vi的替换操作在命令模式下执行,操作是输入:ranges/search/replace/g。其中:
- range表示范围,%表示当前文件的所有行,.表示当前行,$表示最后一行。例如10,20表示从第10行到第20行,.,$表示从当前行到最后一行
- s表示替换
- search是需要被替换的字符串的正则表达式
- replace表示新的字符串或者新的字符串正则表达式
- g可有可无,如果有的话就表示替换此范围内的所有search匹配的字符串,不然仅替换第一个字符串
像块折叠之类的功能现在对我来说有点太高级了,也记不住那么多,等这些命令都倒背如流了再说。