【发布时间】:2010-09-09 08:25:50
【问题描述】:
什么是基本的 vim 命令?新用户需要知道什么才能避免陷入麻烦?请每条评论一条命令。
【问题讨论】:
-
请重新措辞,要求人们在每个答案中只发布 一个 命令,以便正确投票。
-
那么应该是一个社区维基。
什么是基本的 vim 命令?新用户需要知道什么才能避免陷入麻烦?请每条评论一条命令。
【问题讨论】:
首先你需要知道如何关闭vi: ctrl-c : q!
Rest 可以从 vimtutor 中找到。通过在命令行输入 vimtutor 来启动 vimtutor
【讨论】:
:q!?为什么选择 Control-C?为什么不是普通的 ESC?
我最喜欢的命令之一是 %G,它直接到达文件的末尾。在日志文件中特别有用。
【讨论】:
如何在模式之间切换(i 进入插入模式(多种方式之一),esc 退出插入模式,冒号用于命令模式)以及如何保存和退出。 (:wq)
【讨论】:
我用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)
我知道还有很多,但这些已经足够让你度过难关了。
【讨论】:
另一个有用的命令是搜索:/ 例如/Mon 将搜索(在 vim 突出显示的情况下)您文件中出现的任何 Mon。
【讨论】:
: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
我想这些是基本的开始
【讨论】:
正如其他几个人已经提到的,vimtutor 是要走的路。它会教你在 vim 中需要知道的一切。我给你的一条一般建议是尽可能远离插入模式。其他模式也有很大的威力,只需要一点点练习就能适应。
【讨论】:
使用“J”(J 表示加入;大写)命令删除行尾的换行符。否则你会发现它很棘手。
【讨论】:
当您需要执行一些重复操作时,宏通常比正则表达式更快。 只需输入
q[0-9a-z] in normal mode
很多人使用
qq
因为它很快。 按 q 在正常模式下 再次停止录制。 然后输入
@[0-9a-z] in normal mode
重复刚才录制的内容。
@q
上面的例子。
编辑添加:您还可以重复宏。假设您编写了一个宏来跳转到行首,插入一个制表符,然后跳下一行。然后,您可以通过键入“@q”来测试您的宏以运行一次。然后,您可以通过键入“9@q”再重复该操作九次。
【讨论】:
别名 vi nedit :)
抛开所有的幽默.. 对于 vi WHEN 不使用 nedit..
i(切换到插入模式)a (append = 移动到行尾并切换到插入模式) esc(退出插入模式)dd删除一行x删除一个字符:wq(保存退出)/开始搜索n查找下一个? 向后搜索..yy (yank) 复制一行到缓冲区pp(粘贴)粘贴到这里r(替换一个字符)<N> <command> 这是一个简洁但令人讨厌的功能,可让您输入数字,然后输入命令5dd 将删除 5 行但此时你不妨
- man vi 刷新你的记忆
虽然还有很多,但几年前我从 Vi 切换到了 nedit,我发现它有更多的功能,我可以更轻松地定期使用。选项卡式编辑、增量搜索栏、列选择、复制和粘贴。对选定的行进行排序,在选定内容、整个文档或所有打开的文档中搜索和销毁.. 撕掉下拉菜单.. 它支持我使用的所有语言的语法突出显示..(多年来我使用了很长时间的模式文件。VIM 现在很多都是等价的,但它必须引入一个 Nedit 没有的功能和一个简单的方法在我再次切换之前迁移我的模式文件。
【讨论】:
学习这些命令的时候运行vimtutor也不错
【讨论】:
i - 插入模式(转义退出) dd - 删除行 shift-y - 'Yank'(复制)行 p - 'Put'(粘贴)行 shift-v - 用于选择文本的可视模式(尝试“拉动”此文本并将其“放置”到某处。 ctrl-w n - 创建新窗口(您可以在此处打开文件或开始新文件) ctrl-w v - 垂直分割现有窗口 ctrl-n(在插入模式下) - 自动完成(如果支持) :!运行 shell 命令,通常使用标准输入作为文件或选择(shift-V)
有用的插件来看看: * 缓冲区资源管理器 - 使用 \be 查看缓冲区中的文件(并选择重新打开)
【讨论】:
我最大的建议:ctrl+q 可以避免您不小心按到 ctrl+ s 保存您正在处理的文件
【讨论】:
注意 vi 不是 vim! vim 正在迅速变成新世纪的 emacs。 nvi 可能是最接近原始 vi 的东西。这是一个很好的提示:“xp”将交换两个字符(试试看)。
【讨论】:
【讨论】:
将文件中的任何地方的“foo”替换为“bar” :%s/foo/bar/gc
【讨论】:
我发现不可替代的东西(因为它也可以在 vi 中工作,不像 vim 的可视模式)是标记。您可以用m(小写)和您选择的字母(例如x)标记不同的位置。然后你去别的地方,可以用 ``x(backquote letter) to the exact spot, or with'x`(撇号)返回到该行。
这些动作可以用作命令(拉动、删除等)的参数。比如你要删除10行;不是计数然后移动到最上面一行并输入10dd,而是转到块的开头或结尾,按mm(标记m),然后转到块的另一端,然后按d'm(删除撇号 m)。如果在此示例中使用反引号而不是撇号,则删除将按字符而不是按行进行。尝试用“mark m”在行的中间标记,移动到另一行的中间,然后输入“d backquote m”,你就会明白我的意思了。
【讨论】:
ma 在光标位置添加书签,使用 ``a` 滚动到它。
" ~/.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>
【讨论】:
当我了解到使用 * 或 # 分别向下或向上搜索光标下的单词的那一天,我感到非常高兴。请务必先:set incsearch 和:set hlsearch。
【讨论】:
如果您使用 vim,“u”命令(在命令模式下)将撤消您输入的最后一个命令。您可以反复使用此命令来撤消您在保存文件之前可能犯的错误。
【讨论】:
请参阅http://www.rayninfo.co.uk/vimtips.html,了解大量 Vim 技巧,从基本的“离不开”到非常复杂的东西,您可能从未想过尝试。
【讨论】:
虽然这是个人喜好问题,但我发现其中一项重要工作是将 Esc 重新映射到其他内容。
我发现用 Esc 键退出插入模式非常不舒服,但 Vim 的美妙之处在于它允许键映射。
我目前正在使用以下映射,使用 Control + S:
inoremap <C-s> <Esc>:w<CR>
这具有作为我已经提交到内存中的键映射的优点,并且具有每次进入正常模式时保存我的工作的附加值。是的,我知道这很疯狂,但无论如何我都会经常点击保存命令。这就像一个坏习惯,你知道的。
【讨论】:
我喜欢 Bram Moolenaar 和 Oleg Raisky 的 Vim 5.6 Reference Guide。
可以直接打印成小册子的形式,方便阅读,我一直都放在身边。
它有点老了,但是 Vi 的 8 年寿命是多少?
【讨论】:
Vim Tips Wiki 列出了许多很棒的命令。
【讨论】:
:set ignorecase smartcase
使搜索不区分大小写,除非您的搜索包含大写字母。也许不是最必不可少的,但我发现自己在任何时候在新地方编辑时都会设置此选项。它在我拥有的任何 vimrc 文件中。
【讨论】:
真正的力量在于搜索。以下是基本命令:
/Steve 将在文本中找到“Steve”的第一个实例。 n 将在文本中找到下一个“Steve”。 :%s//Stephen/g 会将您刚刚搜索的所有“Steve”实例替换为“Stephen”。
不是为了推销自己,但我写了一篇关于这个主题的blog 帖子。它侧重于初学者的 Vim 的关键部分。
【讨论】:
:%!xxd
以十六进制查看缓冲区的内容。还原:
:%!xxd -r
【讨论】:
我的最爱:
% 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
【讨论】:
没有人提到旺盛的ctags?谷歌并安装它;比您可能拥有的默认 ctags 好得多。要使用它,请 cd 到您的项目根目录并键入
:!ctags -R .
在一个名为 tags 的文件中构建一个包含项目中所有内容的数据库...java、c++、python、ruby、javascript 等等。
:help ctags 用于使用生成的标签的大量命令,无法概括。 将光标放在函数名上,键入 CMD ],打开定义它的文件。更多类似的命令。很快就会成为第二天性...几乎和 IDE 一样好(而且 VIM 永远不会像 eclipse 那样让您失望。
【讨论】: