人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。
然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。
人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。
然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。
当前回答
de按删除单词末尾的所有内容。在你心中的愿望。
ci(xyz[Esc]——这是一个奇怪的例子。这里,“i”并不意味着插入模式。相反,它意味着在括号内。因此,这个序列剪切了括号内的文本,并将其替换为“xyz”。它也适用于方括号和数字括号内——只需相应地执行ci[或ci{。自然,您可以执行di(如果你只想删除所有文本而不键入任何内容。如果你想删除括号而不仅仅是括号内的文本,你也可以用a代替i。
ci“-剪切当前引号中的文本
ciw-剪切当前单词。这与前一个工作原理相同,只是(被替换为w。
C-切割线路的其余部分并切换到插入模式。
ZZ—保存并关闭当前文件(关闭当前选项卡的速度比Ctrl-F4快得多!)
ddp-将当前行向下移动一行
xp—将当前字符向右移动一个位置
U-大写,所以viwU大写
~-切换大小写,因此viw~将反转整个单词的大小写
Ctrl+u/Ctrl+d向上或向下滚动页面半个屏幕。这似乎比通常的全屏分页更有用,因为它更容易看到两个屏幕之间的关系。对于那些仍然希望一次滚动整个屏幕的用户,Ctrl+f表示向前,Ctrl+b表示向后。Ctrl+Y和Ctrl+E一次向下或向上滚动一行。
疯狂但非常有用的命令是zz——它滚动屏幕使这一行显示在在中间。这非常适合将您正在处理的代码放在您的注意力中心。Sibling命令——zt和zb——使这一行成为sreen上的最上面或最下面的一行,这并不太有用。
%找到并跳转到匹配的括号。
de--从光标删除到单词末尾(也可以执行de删除,直到下一个空格)
bde--删除当前单词,从左到右分隔符
df[space]—删除直到并包括下一个空格
日期——删除到下一个点
dd--删除整行
ye(或ye)--将文本从这里拖到单词末尾
ce-贯穿单词的结尾
bye--复制当前单词(让我想知道“hi”是什么意思!)
yy--复制当前行
cc——剪切当前行,也可以改为S。还有较低的大写字母,用于剪切当前字符并切换到插入模式。
viwy或viwc。修改或更改当前单词。多次单击w以继续选择每个后续单词,使用b向后移动
vi{-选择图括号中的所有文本。va{-选中包括{}s的所有文本
vi(p-突出显示()s中的所有内容,并替换为粘贴的文本
b和e一个字一个字地移动光标,类似于Ctrl+箭头通常的操作。但是,单词的定义有点不同,因为连续的几个三角形被视为一个单词。如果你从一个单词的中间开始,按b键将始终转到当前单词的开头,而每个连续的b键将跳转到下一个单词开头。同样,容易记住的是,e将光标指向当前单词的末尾,以及随后的每个单词。
与b/e类似,大写字母b和e仅使用空格作为分隔符逐词移动光标。
大写D(深呼吸)删除光标右侧的行的其余部分,与普通编辑器中的Shift+End/Del相同(注意2个键--Shift+D--而不是3)
其他回答
能够在基于客户端/服务器的模式下运行Vim。
例如,假设您正在处理一个项目,其中有大量缓冲区、选项卡和其他信息保存在名为session.vim的会话文件中。
通过发出以下命令,可以打开会话并创建服务器:
vim --servername SAMPLESERVER -S session.vim
请注意,如果要创建服务器,可以打开常规文本文件,而不一定是会话。
现在,假设您在另一个终端中,需要打开另一个文件。如果您通过以下方式定期打开:
vim new_file.txt
您的文件将在单独的Vim缓冲区中打开,这很难与会话中的文件进行交互。要在服务器上的新选项卡中打开new_file.txt,请使用以下命令:
vim --servername SAMPLESERVER --remote-tab-silent new_file.txt
如果没有服务器正在运行,则将像打开常规文件一样打开此文件。
由于每次您想运行这些标志时都提供这些标志是非常乏味的,因此您可以创建一个单独的别名来创建客户端和服务器。
我在bashrc文件中放置了以下内容:
alias vims='vim --servername SAMPLESERVER'
alias vimc='vim --servername SAMPLESERVER --remote-tab-silent'
您可以在以下位置找到有关此的更多信息:http://vimdoc.sourceforge.net/htmldoc/remote.html
========================================================== In normal mode ========================================================== gf ................ open file under cursor in same window --> see :h path Ctrl-w f .......... open file under cursor in new window Ctrl-w q .......... close current window Ctrl-w 6 .......... open alternate file --> see :h # gi ................ init insert mode in last insertion position '0 ................ place the cursor where it was when the file was last edited
我经常想突出显示一个特定的单词/函数名,但还不想搜索到它的下一个实例:
map m* *#
:sp%:h-目录列表/文件选择器,使用当前文件的目录
(属于rampion的cd提示下的评论,但我还没有评论权限)
也许99%的Vim用户都不知道,但这是我每天使用的东西,任何Linux+Vim超级用户都必须知道。
基本命令,但非常有用。
:w !sudo tee %
我经常在编辑一个我没有写权限的文件之前忘记sudo。当我保存该文件时遇到权限错误时,我只需发出vim命令即可保存该文件,而无需将其保存到临时文件,然后再将其复制回来。
显然,您必须在安装了sudo的系统上,并且具有sudo权限。