什么是必不可少的vim命令?新用户需要知道什么才能避免陷入麻烦?请注意每个评论一个命令。
答案 0 :(得分:27)
多年来我和{{}}一直保持着Vi Reference Card。这非常有用。
答案 1 :(得分:14)
我发现无法替代的(因为它在vi中也适用,与vim的视觉模式不同)是标记。您可以使用m
(小写)标记各种位置,然后使用您选择的字母(例如x)标记。然后你去其他地方,然后可以用“x (backquote letter) to the exact spot, or with
'x`(撇号字母)回到该行。
这些动作可以用作命令的参数(yank,delete等)。例如,您要删除10行;而不是计数,然后移动到最顶行并输入10dd
,您转到块的开头或结尾,按mm
(标记m),然后转到另一端阻止,然后按d'm
(删除撇号m)。如果在此示例中使用反引号而不是撇号,则删除将按字符方式工作,而不是按行工作。尝试用“mark m”标记在行的中间,移动到另一行的中间,然后输入“d backquote m”,你会看到我的意思。
答案 2 :(得分:8)
当我学会了使用*或#分别搜索,向下或向上搜索光标下的单词时,我感到非常高兴。请务必先:set incsearch
和:set hlsearch
。
答案 3 :(得分:6)
答案 4 :(得分:5)
当你有一些重复的动作时,宏通常比正则表达式更快。 只需输入
即可q[0-9a-z] in normal mode
很多人使用
qq
因为它很快。 按 q在正常模式下 再次停止录音。 然后输入
@[0-9a-z] in normal mode
重复刚刚录制的内容。
@q
如上所示。
编辑添加:你也可以重复宏。假设您编写了一个宏来跳转到一条线的头部,插入一个标签,然后向下跳一行。然后,通过键入“@q”来运行它一次测试您的宏。然后,您可以通过键入“9 @ q”重复该动作九次。
答案 5 :(得分:4)
:q -> quit
:w -> save
:q! -> quit and don't save
:x -> save and quit
:[number] -> go to line number
G -> go to end of file
dd -> delete line
p -> "put" line
yy -> "copy" line
:s/[searchfor] -> search
我想这些是从
开始的基本要素答案 6 :(得分:4)
使用'J'(J表示Join;大写)命令删除行尾的换行符。否则你会发现它很棘手。
答案 7 :(得分:4)
答案 8 :(得分:3)
虽然这是个人偏好的问题,但我发现其中一个重要的事情就是将Esc重新映射到其他东西。
我发现让Esc键退出插入模式非常不舒服,但Vim的美妙之处在于允许键映射。
我目前正在使用Control + S
:
inoremap <C-s> <Esc>:w<CR>
这样做的好处是我已经提交到内存中的键映射,并且每次进入正常模式时都具有保存工作的附加值。是的,我知道这很疯狂,但无论如何我都会经常使用save命令。你知道,这就像一个坏习惯。
答案 9 :(得分:3)
首先,您需要知道如何关闭vi: ctrl-c:q!
休息可以从vimtutor找到。通过在命令行键入vimtutor启动vimtutor
答案 10 :(得分:2)
Vim Tips Wiki列出了很多很棒的命令。
答案 11 :(得分:2)
请参阅http://www.rayninfo.co.uk/vimtips.html以获取大量的Vim提示,从基本的不能生活到没有非常复杂的内容,您可能从未想过尝试过。
答案 12 :(得分:2)
如果你正在使用vim,'u'命令(在命令模式下)将撤消你输入的最后一个命令。您可以重复使用此命令来撤消在保存文件之前可能犯的错误。
答案 13 :(得分:2)
" ~/.vimrc
" Turn on line numbering
set nu
" Turn on syntax highlighting
syntax on
" Set 4 space expanding tabs
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
"turn off line wrapping
set nowrap
" Map CTRL-N to create a new tab
:map <C-n> <ESC>:tabnew<RETURN>
" Map Tab and CTRL-Tab to move between tabs
:map <Tab> <ESC>:tabn<RETURN>
:map <C-Tab> <ESC>:tabp<RETURN>
答案 14 :(得分:1)
我喜欢Bram Moolenaar和Oleg Raisky的Vim 5.6 Reference Guide 您可以直接以小册子形式打印,易于阅读,我总是把它放在一边 这有点古老了,但Vi的生命周期是8年?
答案 15 :(得分:1)
我在我的vimrc中有这个
set number
set relativenumber
这给了我一个行编号系统,它使 j , k 键非常高效。
答案 16 :(得分:1)
:set ignorecase smartcase
使搜索不区分大小写,除非您的搜索包含大写字母。不是大多数也许不可或缺,但我发现自己在新的地方编辑时都会设置此选项。它在我拥有的任何vimrc文件中。
答案 17 :(得分:1)
:%!xxd
以十六进制查看缓冲区的内容。要还原:
:%!xxd -r
答案 18 :(得分:1)
我最大的提示: ctrl + q 保存你不小心碰到 ctrl + 的那一天s 保存您正在处理的文件
答案 19 :(得分:1)
在学习这些命令时运行vimtutor也很不错
答案 20 :(得分:1)
alias vi nedit:)
除了幽默之外...... 为vi什么时候不使用nedit ..i
(切换到插入模式)a
(追加=移至行尾并切换到插入模式)esc
(退出插入模式)dd
删除一行x
删除字符:wq
(保存并退出)/
开始搜索n
找到下一个?
向后搜索.. yy
(猛)将一行复制到缓冲区pp
(粘贴)将其粘贴到此处r
(替换字符)<N> <command>
这是一个整洁但加重的功能,可让您输入数字然后输入命令5dd
将删除5行但此时你也可以
- man vi
并刷新你的记忆
虽然还有很多,但几年前我从Vi切换到了nedit,我发现它有更多的功能,我可以更容易定期使用。选项卡式编辑,增量搜索栏,列选择,复制和粘贴。排序选定的行,搜索和销毁选择,整个文档或所有打开的文档.. 撕下下拉菜单.. 它支持我使用的所有语言的语法高亮..(使用模式文件我多年来使用了很长时间。现在VIM很多都是等价的,但它必须引入一个Nedit没有的功能和一个简单的方法在我再次切换之前迁移我的模式文件。
答案 21 :(得分:0)
真正的力量在于搜寻。以下是基本命令:
/史蒂夫将在文中找到“史蒂夫”的第一个例子。 你会在文中找到下一个“史蒂夫”。 :%s // Stephen / g将替换你刚用“Stephen”搜索的所有“Steve”实例。
不是为了宣传自己,而是写了一篇关于这个主题的blog帖子。它侧重于初学者的Vim的关键部分。
答案 22 :(得分:0)
我最喜欢的命令之一是%G,它直接到达文件的末尾。在日志文件中特别有用。
答案 23 :(得分:0)
:g/<pattern>/t$
会将<pattern>
复制到文件末尾。当你想要提取线但不想逐一进行时很有用。
答案 24 :(得分:0)
请参阅此网站,了解有关学习基本动作命令的有趣方法:http://kikuchiyo.org。我认为线程中涵盖了大多数基本命令,但我总是喜欢为新手提出建议。单击列车第一个链接,其中包含基本移动命令的图例,以及用于拾取红宝石的插入命令i
。快速移动的好习惯。
答案 25 :(得分:0)
答案 26 :(得分:0)
有时重新格式化缓冲区(即重新标签,对齐括号等)是很好的。我最近为此节省了时间:
gg=G
例如......它会变成以下内容:
if ( !flag )
{
// Do something special
}
else
{
// Do another special thing
}
进入以下内容:
if ( !flag )
{
// Do something special
}
else
{
// Do another special thing
}
或者如果你有一个你希望重新缩进的xml文件,因为格式很复杂,你可以运行上面的命令并转换如下内容:
<root>
<addressBook>
<contact first="Frank" last="Tank"/>
<contact first="Foo" last="Man"/>
</addressBook>
</root>
更像人类可读的东西,如下所示:
<root>
<addressBook>
<contact first="Frank" last="Tank"/>
<contact first="Foo" last="Man"/>
</addressBook>
</root>
答案 27 :(得分:0)
我使用The tutorial here完成了我的第一步,并使用了参考备忘单几周。当然,还有vim / gvim / Macvim中的vimtutor。
答案 28 :(得分:0)
没人提到旺盛的ctags?谷歌并安装它;比你可能拥有的默认ctags要好得多。要使用它,请cd到项目根目录并键入
:!ctags -R。
在一个名为tags的文件中构建项目中所有内容的数据库... java,c ++,python,ruby,javascript,任何东西。
:使用生成的标签帮助ctags执行许多命令,这些命令太多无法概括。 将光标放在函数名称上,键入CMD],打开定义它的文件。还有更多这样的命令。很快就变成了第二天性......几乎和IDE一样好(VIM从来没有像往常那样让你失望。
答案 29 :(得分:0)
我的最爱:
% find matching bracket/brace
* and # next/previous match
gg top of page
G end of the page
<Ctrl-v> Change to visual mode and select column
<Ctrl-a> increase current number by 1
<Ctrl-x> decrease current number by 1
Running macros
答案 30 :(得分:0)
如何在模式之间切换(i进入插入模式(多种方式之一),esc退出插入模式,冒号进入命令模式)以及如何保存和退出。 (:WQ)
答案 31 :(得分:0)
将“foo”替换为文件中的“bar” :%S /富/酒吧/ GC
答案 32 :(得分:0)
我非常轻松地使用vi,我只使用以下命令:
a - switch to insert mode (after the cursor)
esc - return to command mode
:wq - save and quit
:q - quit (no save, only without modification)
:q! - force quit (no save, also with modification)
x - delete one character (in command mode)
dd - delete the whole line (in command mode)
我知道还有很多,但这些足以让你过去。
答案 33 :(得分:0)
另一个有用的命令是搜索一些东西:/ 例如/ Mon将搜索(如果是vim高亮显示)文件中出现Mon的任何内容。
答案 34 :(得分:0)
正如其他几个人已经提到的那样,vimtutor是要走的路。它会教你在vim中需要知道的一切。我给你的一条一般建议是尽可能地避免插入模式。在其他模式中有巨大的力量,只需要一点点练习就可以适应它。
答案 35 :(得分:0)
i - 插入模式(退出退出) dd - 删除行 shift-y - 'Yank'(复制)行 p - '放'(粘贴)线 shift-v - 用于选择文本的可视模式(尝试'yanking'这个文本并'把'放在某个地方。 ctrl-w n - 创建新窗口(您可以在这里打开文件或启动新文件) ctrl-w v - 垂直拆分现有窗口 ctrl-n(在插入模式下) - 自动完成(如果支持) !运行shell命令,通常使用标准输入作为文件或选择(shift-V)
要查看的有用插件: * Buffer Explorer - 使用\ be来查看缓冲区中的文件(并选择重新打开)
答案 36 :(得分:0)
NB vi不是vim! vim正在迅速变成新世纪的电子邮件。 nvi可能是最接近原始vi的东西。这是一个很好的提示:“xp”将交换两个字符(试一试)。