vim技巧收集
最近喜欢看看vim的东西了,在网上收集了一些技巧,贴出来好便于以后查找:
去除重复: www.zhishiwu.com
方法一:
:sort
:g/^/(./+/)$/n/1/d
方法二:
:sort u
删除某些行:
方法一:
:%s/正则表达式//g
方法二:
:g/正则表达式/d
在Vim中直接调用Linux的seq命令 输出10,11,12.。。。20
:r !seq 10 20 (多行)或 :r !echo {10..20} (单行)
以下命令可以对标点内的内容进行操作。
ci'、ci"、ci(、ci[、ci{、ci< - 分别更改这些配对标点符号中的文本内容
di'、di"、di(或dib、di[、di{或diB、di< - 分别删除这些配对标点符号中的文本内容
yi'、yi"、yi(、yi[、yi{、yi< - 分别复制这些配对标点符号中的文本内容
vi'、vi"、vi(、vi[、vi{、vi< - 分别选中这些配对标点符号中的文本内容
cit 删除一对 HTML/XML 的标签内部的所有字符并进入插入模式
ci” ci’ ci` 删除一对引号字符 (” 或 ‘ 或 `) 中所有字符并进入插入模式
另外如果把上面的i改成a可以连配对标点一起操作。
:sh 如果要在编辑环境中和shell长时间交互,用这个跳到shell环境下面,退回vim环境就是exit了
: .!command 在交互的过程中,如果我们需要将程序的执行结果直接贴到vim中,当然位置是vim中的当前行了,就用这个。(以前没有实验成功,应该是.!)
!! 在 noraml 模式里直接插入外部程序输出
:line1,line2 d 删除line1,与line2之间包括本身的文本行。
:line1,line2 m line3 将line1与line2之间的内容包本身移动到line3之后。
:line1,line2 co line3 将line1,line2之间的内容包括本身复制到line3之后。
set colorcolumn=80 set cuc
用shift+字母可以在小写下转化为大写
:ab string1 string2 string2是我们原本要输入的内容,string1是我们设定的简写方式
:r filename 将该文件补充到当前行的下面
nJ 先按n,然后在按shfit+j,这样下面的n行都会被连接到当前行的末尾
set cuc set cul 这两个是增强视线效果
set autoindent 自动缩进
set ruler 标尺
set autoread 自动读取
history
Ctrl-A 数字++ Ctrl-X 数字-- normal mode:
CTRL-X CTRL-F 补全文件名
CTRL-X CTRL-L 整行补全
CTRL-X CTRL-N 根据当前文件里关键字补全
CTRL-X CTRL-V 补全vim命令
:mX 移动行 当前行移动到第X行
:coX :tX 复制行,当前行复制到第X行
'' 此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查找到某个单词后, 再输入此命令则回到上次停留的位置.
'. 此命令相当好使, 它移动光标到上一次的修改行.
`. 此命令相当强大, 它移动光标到上一次的修改点.
. 重复上次编辑命令.
gj, gk 长行上下移动把换行的行当成一行来移动
选择需要统计的文本 按下 g<C-g>
:g/搜索/# 可以展示所有找到的结果并且附带行号
:Sex 分割并展示当前文件所在目录,:E 展示当前文件所在目录
:only 关闭当前标签页中的其它窗口;:tabo[nly] 关闭其它标签页
gu 变成小写,gU 变成大写,g~ 则切换大小写。如 ggguG 全文变小写。可视模式下也可以用 u U ~ 来达到相同的功能。
g; 按照最近修改的顺序进行光标的跳转,g, 与 g; 类似但方向相反
:v/test/d 删除当前文件中所有不包含test的行
:g/test/d 删除当前文件中所有包含test的行
Normal模式下按”gf“ vim打开光标文件 ,按”CTRL-^“回到刚才的位置
”q/“和”q?“命令,在vim窗口最下面打开一个新的窗口,这个窗口会列出你的查找历史记录
‘incsearch‘表示在你输入查找内容的同时,vim就开始对你输入的内容进行匹配
‘ignorecase‘选项表示在查找时忽略大小写。
进入normal模式,按查找键盘(/),然后然后用鼠标选择需要的内容,选取会自动选择行号,菜单栏编辑-复制即可。