Writing /share/Web/wiki/data/cache/0/0337a7886719e10e08f14c6342d02e2d.metadata failed
语法:gvim
差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| 语法:gvim [2024/01/13 10:52] – 移除 - 外部编辑 (Unknown date) 127.0.0.1 | 语法:gvim [2024/07/03 08:09] (当前版本) – [2.1 tab转空格] user01 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | ====== gvim ====== | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== - windows gvim ===== | ||
| + | |||
| + | |||
| + | ==== - _vimrc ==== | ||
| + | <code vim> | ||
| + | set nocompatible | ||
| + | source $VIMRUNTIME/ | ||
| + | " | ||
| + | " | ||
| + | set encoding=utf-8 | ||
| + | |||
| + | set tabstop=4 | ||
| + | set shiftwidth=4 | ||
| + | set expandtab | ||
| + | set autoindent | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== - 菜单语言切换为英文 ==== | ||
| + | 在_vimrc文件末尾加入以下内容 | ||
| + | <code vim> | ||
| + | set langmenu=en_US | ||
| + | let $LANG= ' | ||
| + | source $VIMRUNTIME/ | ||
| + | source $VIMRUNTIME/ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== - gvim支持中文显示 ==== | ||
| + | <code vim> | ||
| + | set fileencodings=utf-8, | ||
| + | " set termencoding=utf-8 | ||
| + | "set fileformats=unix | ||
| + | "set encoding=utf-8 | ||
| + | </ | ||
| + | |||
| + | ==== - 保持linux操作方式,比如支持Ctrl-V 选择 ==== | ||
| + | 注释以下行 | ||
| + | <code vim> | ||
| + | " | ||
| + | </ | ||
| + | |||
| + | ==== - tab宽度及其它 ==== | ||
| + | <code vim> | ||
| + | set expandtab | ||
| + | set shiftwidth=4 | ||
| + | set tabstop=4 | ||
| + | set noundofile | ||
| + | set cursorline | ||
| + | set cursorcolumn | ||
| + | set nobackup | ||
| + | </ | ||
| + | |||
| + | ===== - 用法技巧等 ===== | ||
| + | ==== - tab转空格 ==== | ||
| + | < | ||
| + | :retab | ||
| + | </ | ||
| + | |||
| + | ==== - 显示match匹配行数 ==== | ||
| + | <code vim> | ||
| + | :%s/xxx//gn | ||
| + | |||
| + | [g] 替换行中出现所有匹配,否则只替换第一个。 | ||
| + | [n] 意思是显示匹配数,但是不做实际的替换操作; | ||
| + | [i] 匹配时忽略大小写, | ||
| + | [I] 匹配时不忽略大小写, , set ignorecase在这不起作用 | ||
| + | </ | ||
| + | |||
| + | ==== - 输入时不自动换行 ==== | ||
| + | <code vim> | ||
| + | set textwidth=0 | ||
| + | </ | ||
| + | 默认情况下,其width值为78。设置为0就相当于关闭这个功能,设置成正值就可以让 vim 在指定长度上折行。 | ||
| + | |||
| + | ==== - gvim启动时窗口默认最大化 ==== | ||
| + | |||
| + | linux环境,在.vimrc文件中加入以下内容: | ||
| + | |||
| + | <code vim> | ||
| + | if has(" | ||
| + | " GUI is running or is about to start. | ||
| + | " Maximize gvim window (for an alternative on Windows, see simalt below). | ||
| + | set lines=999 columns=999 | ||
| + | else | ||
| + | " This is console Vim. | ||
| + | if exists(" | ||
| + | set lines=50 | ||
| + | endif | ||
| + | if exists(" | ||
| + | set columns=100 | ||
| + | endif | ||
| + | endif | ||
| + | </ | ||
| + | 以上的数值可以根据实际情况再作微调。 | ||
| + | |||
| + | 如果只是想把gvim窗口设置到合适大小,可以根据情况自行调整lines和columns的大小。 | ||
| + | |||
| + | windows环境,在_vimrc文件中加入以下内容: | ||
| + | <code vim> | ||
| + | autocmd GUIEnter * simalt ~x | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ==== - gvim窗口初始位置 ==== | ||
| + | 有时候可能会有调整gvim窗口刚打开时的窗口初始位置,比如固定为左上角,右上角,居中等等,可以通过下面的方式去设置它的初始窗口位置。 | ||
| + | <code vim> | ||
| + | # 在.vimrc文件写入如下语句,将gvim窗口放在指定位置, | ||
| + | :winpos x y | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== - vim打开文件时回到上次浏览位置 ==== | ||
| + | |||
| + | <code vim> | ||
| + | " | ||
| + | " | ||
| + | if has(" | ||
| + | " | ||
| + | | ||
| + | \ if line("' | ||
| + | \ exe " | ||
| + | \ endif | ||
| + | endif | ||
| + | </ | ||
| + | |||
| + | |||
| + | 以下是来自于gvim help '" | ||
| + | This autocommand jumps to the last known position in a file just after opening it, if the '" | ||
| + | <code vim> | ||
| + | au BufReadPost * if line("' | ||
| + | </ | ||
| + | ==== - 显示当前文件的完整路径 ==== | ||
| + | 先按下数字键1, 然后再按Ctrl + G | ||
| + | < | ||
| + | CTRL-G | ||
| + | |||
| + | {count}CTRL-G | ||
| + | If the count is higher than 1 the current buffer number is also given. | ||
| + | </ | ||
| + | ==== - vimdiff 忽略空格 ==== | ||
| + | |||
| + | https:// | ||
| + | |||
| + | 只需在vimrc文件中加入以下: | ||
| + | <code vim> | ||
| + | set diffopt+=iwhite | ||
| + | </ | ||
| + | 或者 | ||
| + | <code vim> | ||
| + | if &diff | ||
| + | set diffopt+=iwhite | ||
| + | endif | ||
| + | </ | ||
| + | |||
| + | 或者 | ||
| + | <code vim> | ||
| + | if &diff | ||
| + | map gs :call IwhiteToggle()< | ||
| + | function! IwhiteToggle() | ||
| + | if & | ||
| + | set diffopt-=iwhite | ||
| + | else | ||
| + | set diffopt+=iwhite | ||
| + | endif | ||
| + | endfunction | ||
| + | endif | ||
| + | </ | ||
| + | |||
| + | 或者以下面的命令方式启动比较: | ||
| + | <code bash> | ||
| + | vimdiff -c 'set diffopt+=iwhite' | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ==== - 批处理命令执行 ==== | ||
| + | 比如以下的命令 | ||
| + | <code vim> | ||
| + | : | ||
| + | : | ||
| + | </ | ||
| + | |||
| + | 假设是期望依次执行上述语句,可以将其保存到一个临时文件,比如abc.vim, 然后在vim窗口中执行'': | ||
| + | |||
| + | |||
| + | ==== - 在每行内容前插入行号 ==== | ||
| + | |||
| + | :set number 命令可以在 vim 中显示行号,但是如何让 vim 在真正的文件中添加行号呢? 比如说当你要打印代码的时候,或者将代码粘贴到网上的时候,在代码中添加行号会更利于浏览,废话说了这么多,其实只要一行命令就可以搞定。 | ||
| + | |||
| + | <code vim> | ||
| + | " ===== 正向顺序 | ||
| + | :g/^/exe ": | ||
| + | |||
| + | " ====== 反向顺序, | ||
| + | :g/^/exe ": | ||
| + | |||
| + | |||
| + | |||
| + | " ===== 也可以加入printf, 修改行号占用的宽度,比如占用4位宽,这样显得比较对齐。 | ||
| + | :g/^/exe ": | ||
| + | |||
| + | |||
| + | " ===== 选中范围行首插入行号, | ||
| + | :'<,'> | ||
| + | :'<,'> | ||
| + | |||
| + | " ===== 10行到30行首插入行号, | ||
| + | :10,30 g//exe ": | ||
| + | |||
| + | |||
| + | " ===== 语法解释: 匹配到^的每一行都执行 exe : | ||
| + | |||
| + | |||
| + | " | ||
| + | : | ||
| + | : | ||
| + | : | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== - 表达式替换 ==== | ||
| + | 比如一个文件内容为: | ||
| + | < | ||
| + | AAAA | ||
| + | AAAA | ||
| + | AAAA | ||
| + | </ | ||
| + | 需要替换为如下样式: | ||
| + | < | ||
| + | BBBB_1 | ||
| + | BBBB_2 | ||
| + | BBBB_3 | ||
| + | </ | ||
| + | 注意看,123分别是行号,可以采用以下命令进行vim替换操作. | ||
| + | < | ||
| + | : | ||
| + | </ | ||
| + | |||
| + | 这里用到的\=,后面就是跟需要的表达式就行。 | ||
| + | |||
| + | |||
| + | ==== - iskeyword ==== | ||
| + | 参考: https:// | ||
| + | |||
| + | <code vim> | ||
| + | iskeyword, 简写为isk | ||
| + | set iskeyword | ||
| + | set isk | ||
| + | </ | ||
| + | |||
| + | 使用 '' | ||
| + | |||
| + | 注意,有的语法加载会修改这个分词,导致使用gvim造成不便。 | ||
| + | |||
| + | 通过执行'' | ||
| + | |||
| + | 如果发现iskeyword被修改,可以单独再把它修改回来,这样避免后面的不便。 | ||
| + | |||
| + | ===== - vim正则表达式 ===== | ||
| + | |||
| + | |||
| + | <code vim> | ||
| + | Vim中的正则表达式 | ||
| + | |||
| + | . 匹配任意一个字符 | ||
| + | [abc] 匹配方括号中的任意一个字符。可以使用-表示字符范围, 如[a-z0-9]匹配小写字母和阿拉伯数字 | ||
| + | [^abc] 在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符 | ||
| + | \d 匹配阿拉伯数字,等同于[0-9] | ||
| + | \D 匹配阿拉伯数字之外的任意字符,等同于[^0-9] | ||
| + | \x 匹配十六进制数字,等同于[0-9A-Fa-f] | ||
| + | \X 匹配十六进制数字,等同于[^0-9A-Fa-f] | ||
| + | \w 匹配单词字母,等同于[0-9A-Za-z_] | ||
| + | \W 匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_] | ||
| + | \t 匹配< | ||
| + | \s 匹配空白字符,等同于[ \t] | ||
| + | \S 匹配非空白字符,等同于[^ \t] | ||
| + | \a 所有的字母字符. 等同于[a-zA-Z] | ||
| + | \l 小写字母 [a-z] | ||
| + | \L 非小写字母 [^a-z] | ||
| + | \u 大写字母 [A-Z] | ||
| + | \U 非大写字母 [^A-Z] | ||
| + | |||
| + | 表示数量的元字符 | ||
| + | * 匹配0-任意个 | ||
| + | \+ 匹配1-任意个 | ||
| + | \? 匹配0-1个 | ||
| + | \{n,m} 匹配n-m个 | ||
| + | \{n} 匹配n个 | ||
| + | \{n,} 匹配n-任意个 | ||
| + | \{,m} 匹配0-m个 | ||
| + | \_. 匹配包含换行在内的所有字符 | ||
| + | \{-} 表示前一个字符可出现零次或多次,但在整个正则表达式可以匹配成功的前提下,匹配的字符数越少越好 | ||
| + | \= 匹配一个可有可无的项 | ||
| + | \_s 匹配空格或断行 | ||
| + | \_[] | ||
| + | \* 匹配 * 字符 | ||
| + | \. 匹配 . 字符 | ||
| + | \/ 匹配 / 字符 | ||
| + | \\ 匹配 \ 字符 | ||
| + | \[ 匹配 [ 字符 | ||
| + | |||
| + | 表示位置的符号 | ||
| + | $ 匹配行尾 | ||
| + | ^ 匹配行首 | ||
| + | \< 匹配单词词首 | ||
| + | \> 匹配单词词尾 | ||
| + | |||
| + | 替换变量 | ||
| + | 在正规表达式中使用 和 符号括起正规表达式,即可在后面使用\1、\2等变量来访问 和 中的内容 | ||
| + | |||
| + | 懒惰模式 | ||
| + | \{-n,m} 与\{n, | ||
| + | \{-} 匹配它前面的项一次或0次, | ||
| + | \| " | ||
| + | \& 并列 | ||
| + | |||
| + | 函数式 | ||
| + | : | ||
| + | 在函数式中可以使用 submatch(1)、submatch(2) 等来引用 \1、\2 等的内容,而submatch(0)可以引用匹配的整个内容 | ||
| + | |||
| + | 与Perl正则表达式的区别 | ||
| + | |||
| + | Vim语法 Perl语法 含义 | ||
| + | \+ | ||
| + | \? ? | ||
| + | \{n, | ||
| + | 和 | ||
| + | |||
| + | 例如: | ||
| + | 1, | ||
| + | 2, | ||
| + | 3, | ||
| + | 4, | ||
| + | |||
| + | : | ||
| + | : | ||
| + | :%s/\w\+, \w\+/\2 \1/ 将 Doe, John 修改为 John Doe | ||
| + | : | ||
| + | : | ||
| + | 将每行开头的单词替换为(行号-10).单词的格式, | ||
| + | 排序 :/ | ||
| + | </ | ||