人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。

然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。


当前回答

:r! <command>

将外部命令的输出粘贴到缓冲区中。

做一些数学运算,直接在文本中得到结果:

:r! echo $((3 + 5 + 8))

获取编写Makefile时要编译的文件列表:

:r! ls *.c

不要在维基百科上查找你阅读的事实,直接将其粘贴到你正在编写的文档中:

:r! lynx -dump http://en.wikipedia.org/wiki/Whatever

其他回答

我的方法是使用宏而不是搜索-将宏与视觉模式相结合有时会更有效。

我的一些必备品是:

cscope+ctags+vim,可以在网上找到。

一些用于快速启动新代码文件的缩写,例如:

ab cpph #include <iostream><CR>#include <string><CR>#include <cstdlib><CR>#include <cassert><CR>#include <vector><CR>#include <
stdexcept><CR>using namespace std;<CR>int main(int argc, char *argv[]) {
ab perlh #!/usr/bin/perl<CR>use strict;<CR>use warnings;<CR>
ab chdr #include <stdio.h><CR>#include <sys/types.h><CR>#include <unistd.h><CR>#include <stdlib.h><CR>#include <sys/stat.h><CR>
#include <sys/wait.h><CR>#include <string.h><CR>int main(int argc, char *argv[]) {
ab xhtmlhdr <?xml version="1.0" encoding="UTF-8"?><CR><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.o
rg/TR/xhtml1/DTD/xhtml1-strict.dtd"><CR><html xmlns="http://www.w3.org/1999/xhtml"><CR>  <head><CR>  <title></title><CR><link h
ref="style.css" rel="STYLESHEET" type="text/css"><CR></head>

例如,cpph将插入main.cc文件的基本框架

还有我的功能键映射:

map <F1> <Esc>:w<CR>:perl $e = `./error.pl`; my ($f,$l,@w) = split(":",$e); my $w=join(":",@w); $curwin->Cursor($l,0); VIM::Msg($w);<CR>
map <F2> :wincmd w<CR>
map <F3> :wincmd s<CR>
map <F4> :wincmd v<CR>
map <F5> :wincmd o<CR>
map <F6> :sball<CR>
map <F7> :wq<CR>
map <F8> :wincmd q<CR>
map <F9> :wincmd -<CR>
map <F10> :wincmd +<CR>
map <F11> :wincmd <<CR>
map <F12> :wincmd ><CR>

在这种情况下,我的F1被映射为将光标放在下一个需要进行源代码迁移的错误上。

map _ ebi"^[ea"^[

此映射将使_引用一个字符串

:r! <command>

将外部命令的输出粘贴到缓冲区中。

做一些数学运算,直接在文本中得到结果:

:r! echo $((3 + 5 + 8))

获取编写Makefile时要编译的文件列表:

:r! ls *.c

不要在维基百科上查找你阅读的事实,直接将其粘贴到你正在编写的文档中:

:r! lynx -dump http://en.wikipedia.org/wiki/Whatever

我什么都用Vim。编辑电子邮件时,我使用:

gqap(或gwap)

即使使用引号引导字符,也可以在逐段基础上轻松正确地重新格式化。为了实现此功能,我还添加了:

-c’集合fo=tcrq’-c’集合tw=76’

到外部调用编辑器的命令。一个值得注意的添加是将“a”添加到fo(formatoptions)参数中。这将在您键入和浏览内容时自动重新格式化段落,但可能会干扰或导致消息中错误或奇怪格式的问题。

全部替换

  :%s/oldtext/newtext/igc

给出一个替换所有:)