VI设置及用法

一、VI设置

通过/etc/vim/vimrc设置vi的基本操作格式。 全局属性
通过末行模式输入可临时设置。
syntax on "高亮显示
set tabstop=4
set softtabstop=4 "设置(软)制表符宽度为4
set shiftwidth=4 "设置缩进的空格数为4
set autoindent "设置自动缩进
set nu "左行显示文本行号
set nonu        "去除行号

set ic     "忽略大小写 ignore case
set cursorline "show line
--------------------------------------------------------------------------------------
let &termencoding=&encoding
set fileencodings=utf-8,gbk ;中文乱码问题

自定义快捷键
:map <F10> <Esc>:tabnew<CR>
其中:<Esc>代表Escape键;<CR>代表Enter键;而功能键则用<F10>表示。首先进入命令行模式,然后执行新建标签页的:tabnew命令,最后返回常规模式。
同理:对于组合键,可以用<C-Esc>代表Ctrl-Esc;使用<S-F1>表示Shift-F1。对于Mac用户,可以使用<D>代表Command键。
注意:Alt键可以使用<M-key>或<A-key>来表示。
关于键盘符号的详细说明,请使用:h key-notation命令查看帮助信息
map <F5> <ESC>:tp<CR> //tags 查找同一标签的上一处
map <F6> <ESC>:tn<CR>      //tags 查找同一标签的下一处

自定义状态栏:
set laststatus=2
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
-----------------------------------------------------------------------------------------------------
:ab hw hello world 用一个缩写字符串代替一个长的字符串,此处用 hw 代替 hello world
-----------------------------------------------------------------------------------------------------

二、vi用法

1.移动光标
h 左移 l 右移 j 上移 k 下移动
0 光标移动到该行开头
$ 光标移动到该行末尾
G 光标移动到最后一行的开头
ctrl + b 向前卷一页
ctrl + f 向后卷一页

n+ 光标上移n行,
n- 光标下移n行

$:移动到行尾 3$:移动到3行后的行尾
^:移动到行首,0也是
+:移到下一行的行首
-: 移到上一行的行首
2.复制文本
yy 将光标 整行复制
yw 复制光标所处的整个单词
nyw 复制光标所处及后面n个单词
nyy 复制光标所处行及后面n行
p 粘帖
3. 删除文本
dd 连按两次d,可将光标所在的行删除。若要连续删除,可以按住d不放。
ndd 连续删除n行
D 将光标所在行后所有的单词删除
4.撤销操作
u撤销上一步操作
ctrl+r 恢复上次撤销的动作。
5.找出行数及其他按键
ctrl+g 在最后一行显示光标所在位置的行数及文章的总行数
nGG 将光标移动至n行首
ZZ 连续两次输入Z ,表示保存文件并退出vim。
6.最后行操作模式的主要命令
e 在vim编辑中,可使用e创建新文件
w! 如果要写只读文件,可以使用W!强制写入文件。
q! 强制退出
set nu set可以设置vim的某些特性,这里是设置每行的开头提示行数,要取消设置set none
7.搜索
/string 向后搜索字符串
?string 向前搜索字符串 n向后 N向前
# 到与当前单词相同的上一个单词上, * 到与当前单词相同的下一个单词上
8. gg到文件开头,G到文件结尾行

9. manpage

shift+k显示光标所在函数的manpage。

10. vim 中可用 :s 命令来替换字符串,具体如下:

[range]s/from/to/[flags]

1)[range]
:s/str1/str2/ 替换当前行第一个 str1 为 str2
:s/str1/str2/g 替换当前行中所有 str1 为 str2
:%s/str1/str2/g 替换所有行中的str1 为 str2
:ms/str1/str2/ 替换第m行的第一个 str1 为 str2
:m,ns/str1/str2/g 替换第 m 行开始到第 n 行中所有的 str1 为 str2
(注:m和n 为数字,若m为 .,表示为当前行开始;若n为$,则表示到最后一行结束)

2)[flags]
无 : 只对指定范围内的第一个匹配项进行替换。
g : 对指定范围内的所有匹配项进行替换。
c : 在替换前请求用户确认。
e : 忽略执行过程中的错误。
注意:上面的所有flags都可以组合起来使用,比如 gc 表示对指定范围内的所有匹配项进行替换,并且在每一次替换之前都会请用户确认。

3) 分隔符
如果使用 # 作为分隔符,则中间出现的 / 不会作为分隔符,比如:
:s#str1/#str2/# 替换当前行第一个 str1/ 为 str2/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

-----------------------------------------------------------------------------------------------------------------------------------

三、vim插件

1. man.vim

在浏览代码中,碰到系统函数调用,可能对于它们的参数类型、参数个数、返回值不确定,这时man.vim就被派上用场了。

vi ~/.vimrc
:source $VIMRUNTIME/ftplugin/man.vim

man.vim插件自vim包自带的,存放在/usr/share/vim/vim72/syntax/man.vim和/usr/share/vim/vim72/ftplugin/man.vim,当然你也可以将其拷贝到~/.vim/ftplugin下统一管理,source的时候更改相应的路径即可。

在vim命令模式下:Man 系统调用(如:Man strcpy)

四、vim去除^M

linux下 ^M的输入方法是ctrl+v然后再ctrl+m

1. vim下显示^M

:e ++ff=unix %

2. vim下删除^M

:%s/^M$//g

3. 在linux查找^M

find ./ | xargs grep '^M' -l -s

4.在linux下删除^M

find ./ | xargs grep '^M' -l -s | xargs dos2unix

五、ctags应用

 sudo apt-get install ctags

ctags -R 

vim -t alloc_chrdev_region        //就可以找到alloc_chrdev_region这个符号信息了。

进入定义出用ctrl + ]

返回原来的地方:ctrl + t

编辑/etc/vim/vimrc增加如下两行,可用F5、F6查找
map <F5> <ESC>:tp<CR>               //tags 查找同一标签的上一处
map <F6> <ESC>:tn<CR>      //tags 查找同一标签的下一处 

六、swap文件

当你强行关闭vi时,比如电源突然断掉或者你使用了Ctrl+ZZ,vi自动生成一个.swp文件,下次你再编辑时,就会出现一些提示。

你可以使用vi -r {your file name}来恢复文件,然后用rm删除swp文件(rm .{your file name}.swp),不然每一次编辑时总是有这个提示。

 

参考:

1. vim操作汇总

posted @ 2015-07-30 21:17  yuxi_o  阅读(856)  评论(0编辑  收藏  举报