未整理:http://blog.chinaunix.net/uid-10449864-id-2956813.html
http://coolshell.cn/articles/5426.html
http://www.cnblogs.com/amaoxiaozhu/archive/2012/03/23/2414007.html 这篇文章非常好
vi filename #打开文件,并停留在上次编辑的位置 vi +n filename #打开文件,并跳转到第n行 vi +/word filename #打开文件,跳转到含有内容word的行
h 或 向左箭头键(←)
光标向左移动一个字符
j 或 向下箭头键(↓)
光标向下移动一个字符
k 或 向上箭头键(↑)
光标向上移动一个字符
l 或 向右箭头键(→)
光标向右移动一个字符
向后移动30行 :30+↓或者30+j
向后移动30个字符距离 :30+<space>
向后移动30行 :30+<Enter>
向下移动一页 :<pagedown>
向上移动一页 :<pageup>
本行最前面 :<home>
本行最后面 :<end>
i | 当前光标前插入 |
a | 当前光标后插入 |
I | 行首插入 |
A | 行尾插入 |
o | 当前行后插新行 |
O | 当前行前插新行 |
cw | 替换单词 |
dd | 删除当前行 |
x | 删除当前光标字符【相当于delete】 |
X | 删除光标前一个字符【相当于backspace】 |
gg | 回到文件首 |
ngg/n | 跳转到第n行 |
G | 回到文件尾 |
yy | 复制当前行 |
p | p 为将已复制的数据在光标下一行贴上 |
P | P 则为贴在游标上一行 |
1,set paste/ set nopaste
2,设置.vimrc
u | 撤销上一步的操作 |
ctrl+r | 重做前一个命令 |
按v或者V或者ctrl+v进入可视模式(三中按键功能不同,自己体验就明白了)
v | 选任意字段 |
V | 选任意行段 |
ctrl+v | 选任意长方形块 |
【ctrl+v】 + 【I(shift i)】+【Esc Esc】,可以以正方形方式增加内容。
下一个单词 w
上一个单词 b
yw 直接复制一个单词
cw直接修改一个单词
vim中查找下一个 shift+*
vim中补全单词 ctrl+p
Ctrl+ n 中的n为next 中n;
Ctrl+p中的p为previous 中p。
?string 会高亮显示光标前匹配的第一个字符串,回车后光标移到该字符串的第一个字母。
/\<word\> 查找单独一个单词
2. 用命令 :set ic 和 :set noic 来分别设置查找时不区分和区分大小写。
:set ic(ignorecase 的缩写) 忽略大小写 :set noic(noignorecase 的缩写) 不忽略大小写
或者直接查找单词时:/word\c 来忽略大小写 /word\C来区别大小写
如果查找特殊字符,如 ^、$、*、/ 和 .,需要在前面加 \ 来转义。加g ,放在命令末尾,表示对搜索字符串的每次出现进行替换;
不加 g,表示只对搜索字符串的首次出现进行替换;
:s/str1/str2/ 替换当前行第一个 str1 为 str2
:s/str1/str2/g 替换当前行中所有 str1 为 str2
:m,ns/str1/str2/ 替换第 n 行开始到最后一行中每一行的第一个 str1 为 str2
:m,ns/str1/str2/g 替换第 n 行开始到最后一行中所有的 str1 为 str2
(注:m和n 为数字,若m为 .,表示为当前行开始;若n为$,则表示到最后一行结束)
2.使用’#‘或者’+‘来替换掉’/‘作为分隔符
如果使用 # 作为分隔符,则中间出现的 / 不会作为分隔符,比如:
:s#str1/#str2/# 替换当前行第一个 str1/ 为 str2/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/
3. 使用%表示替换每一行
:%s/str1/str2/ (等同于 :g/str1/s//str2/) 替换每一行的第一个 str1 为 str2
:%s/str1/str2/g (等同于 :g/str1/s//str2/g 和 :1,$ s/str1/str2/g ) 替换文中所有 str1 为 str2
1,横向切割
:split filename
2,纵向切割
:vsplit filename3,快捷键
先横向切割 ^w+s
再将第二个窗口(上面的)编辑其他文件 :e filename2
再纵向切割 ^w+v
再将第三个窗口(左上角)编辑其他文件 :e filename3
若要退出,则使用 :q或者:qa
vim test.txt :sort :/^\(.\+\)$\n\1
vim test.txt :sort :g/^\(.\+\)$\n\1/d
文本内容:如下示:
4768589 442352^M 4768590 asd520520^M 4768591 1^M 4768592 7936369^M 4768593 HZhaMBdl^M 4768594 3461593520^M 4768595 1^M 4768596 111111^M 4768597 7936369^M 4768598 8914066^M 4768599 7936369^M 4768600 wangyut2^Mset list结果:如果set list来显示所有包括不可见字符时(用set nolist取消),结果是这样的:
4768589 442352^M$ 4768590 asd520520^M$ 4768591 1^M$ 4768592 7936369^M$ 4768593 HZhaMBdl^M$ 4768594 3461593520^M$ 4768595 1^M$ 4768596 111111^M$ 4768597 7936369^M$ 4768598 8914066^M$ 4768599 7936369^M$ 4768600 wangyut2^M$问题原因:windows创建的文件是 \n\r结束的, 而linux,mac这种unix类系统是\n结束的。所以unix的文本到windows会出现换行丢失(ultraedit这种软件可以正确识别); 而反过来就会出现^M的符号了 。
在 Vim 的命令模式中输入 :%s/^M$//g 后,回车即会自动删除该文件中的所有 ^M 字符。
注意: ^M 要用 Ctrl+v, Ctrl+m 来输入, 用键盘直接敲^和M是不行的! 后面的 $ 代表匹配行尾的内容,最后的 g 则表示每行中匹配到的内容都要置换--全局替换,否则只替换每行中匹配到的第一个。
sed ‘s/^M//' file // 正确,但是 ^M = Ctrl+v, Ctrl+m
删除奇数行偶数行,也可以用normal命令,分别为:
奇数行 :%norm jkdd 偶数行 :%norm jdd
set nocompatible syn on " 打开语法高亮 set guifont=Luxi\ Mono\ 9 " 设置字体,字体名称和字号 set tabstop=4 " 设置tab键的宽度 set expandtab set shiftwidth=4 " 换行时行间交错使用4个空格 set autoindent set cindent filetype plugin indent on autocmd FileType c,cpp set cinoptions=:0,g0 autocmd FileType java set sw=2 autocmd FileType java set ts=2 set backspace=2 " 设置退格键可用 if has("gui_running") color evening else color default endif set incsearch " 查询时非常方便,如要查找book单词,当输入到/b时,会自动找到 set hlsearch set nonu " 显示行号 set showmatch " 设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号 set cursorline "set paste set ruler " 在编辑过程中,在右下角显示光标位置的状态行 au BufNewFile,BufRead *.hive set filetype=sql au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif " 下次进入保留在上次停留位置 cmap w!! %!sudo tee > /dev/null %
例如如果要设置显示行号
将set nonu注释掉:"set nonu
再增加一行为: set number
显示所有(包括不可见)字符 set list
:n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为word2 !且在取代前显提示字符给使用者确认 (conform) 是否需要取代!(常用)
:e! 将档案还原到最原始的状态!
ZZ 若档案没有更动,则不储存离开,若档案已经经过更动,则储存后离开!
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu 相反,为取消行号!
http://linux.chinaunix.net/techdoc/desktop/2006/06/02/933610.shtml
http://www.cnblogs.com/amaoxiaozhu/archive/2012/04/05/2423009.html
copy python.vim to ~/.vim/afer/ftplugin
将文件中" let python_highlight_all = 1前面的引号去掉,可支持内置函数,数字,空格,异常的语法高亮。
"以下用来配置pydict.vim插件 set nobackup "取消备份即swp文件 set helplang=cn "设置中文帮助文档 set encoding=utf-8 "设置编码 syntax enable syntax on "设置语法高亮 filetype plugin on let g:pydiction_location = '~/.vim/tools/pydiction/complete-dict' let g:pydiction_menu_height = 20
matrix.vim
在 Vim 网站上下载文件 matrix.vim,存到 ~/.vim/plugin 目录中即可。
是的,说的就是电影 Matrix!Vim 的脚本并不是都干“正经事”的。想看一下电影里那些酷酷的字符在 Vim 的窗口里翻滚吗?发一个命令“:Matrix”即可(按任意键退出)。
http://linux.chinaunix.net/techdoc/desktop/2006/06/02/933610.shtml
http://www.cnblogs.com/amaoxiaozhu/archive/2012/04/05/2423009.html