人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。
然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。
人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。
然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。
当前回答
把这个放到.vimrc中,有一个命令来漂亮地打印xml:
function FormatXml()
%s:\(\S\)\(<[^/]\)\|\(>\)\(</\):\1\3\r\2\4:g
set filetype=xml
normal gg=G
endfunction
command FormatXml :call FormatXml()
其他回答
由于延迟和缺少颜色(我喜欢颜色方案:),我不喜欢在PuTTY的远程机器上编程。所以我开发了这个技巧来解决这个问题。我在Windows上使用它。
你需要
1次gVim远程和本地计算机上的1x rsync1x SSH私钥身份验证到远程计算机,因此您不需要键入密码1x寻呼机1个PuTTY
设置远程计算机
配置rsync以使您的工作目录可访问。我使用SSH隧道,只允许来自该隧道的连接:
address = 127.0.0.1
hosts allow = 127.0.0.1
port = 40000
use chroot = false
[bledge_ce]
path = /home/xplasil/divine/bledge_ce
read only = false
然后启动rsyncd:rsync--daemon--config=rsyncd.conf
设置本地计算机
从Cygwin安装rsync。启动Pageant并加载远程计算机的私钥。如果您正在使用SSH调谐,请启动PuTTY来创建隧道。在工作目录中创建一个批处理文件push.bat,它将使用rsync将更改的文件上载到远程计算机:
rsync --blocking-io *.cc *.h SConstruct rsync://localhost:40001/bledge_ce
SConstruct是scons的构建文件。修改文件列表以满足您的需要。如果不使用SSH调谐,请将localhost替换为远程计算机的名称。
配置Vim这现在很容易。我们将使用快速修复功能(:make and error list),但编译将在远程计算机上运行。所以我们需要设置makeprg:
set makeprg=push\ &&\ plink\ -batch\ xplasil@anna.fi.muni.cz\ \"cd\ /home/xplasil/divine/bledge_ce\ &&\ scons\ -j\ 2\"
这将首先启动push.bat任务以上载文件,然后使用SSH(来自PuTTY套件的Plink)在远程计算机上执行命令。该命令首先将目录更改为工作目录,然后启动构建(我使用scons)。
构建结果将方便地显示在本地gVim错误列表中。
我经常想突出显示一个特定的单词/函数名,但还不想搜索到它的下一个实例:
map m* *#
我什么都用Vim。编辑电子邮件时,我使用:
gqap(或gwap)
即使使用引号引导字符,也可以在逐段基础上轻松正确地重新格式化。为了实现此功能,我还添加了:
-c’集合fo=tcrq’-c’集合tw=76’
到外部调用编辑器的命令。一个值得注意的添加是将“a”添加到fo(formatoptions)参数中。这将在您键入和浏览内容时自动重新格式化段落,但可能会干扰或导致消息中错误或奇怪格式的问题。
也许99%的Vim用户都不知道,但这是我每天使用的东西,任何Linux+Vim超级用户都必须知道。
基本命令,但非常有用。
:w !sudo tee %
我经常在编辑一个我没有写权限的文件之前忘记sudo。当我保存该文件时遇到权限错误时,我只需发出vim命令即可保存该文件,而无需将其保存到临时文件,然后再将其复制回来。
显然,您必须在安装了sudo的系统上,并且具有sudo权限。
让我们看看一些非常小的IDE编辑器如何进行列转换。
:%s/\(.*\)^I\(.*\)/\2^I\1/
解释
\(和\)是如何记住正则表达式中的内容。1、2等是如何检索记忆中的内容。
>>> \(.*\)^I\(.*\)
记住所有内容,然后是^I(tab),然后是所有内容。
>>> \2^I\1
用“你记得的第二件事”替换上面的东西,然后是“你记得第一件事”——本质上是做一个换位。