Vim / vi生存指南

时间:2020-03-05 18:55:16  来源:igfitidea点击:

vim基本命令是什么?新用户需要知道什么才能避免自己陷入麻烦?请给每个注释一个命令。

解决方案

回答

首先,我们需要知道如何关闭vi:
ctrl-c:问!

可以从vimtutor中找到休息。通过在命令行中输入vimtutor来启动vimtutor

回答

我最喜欢的命令之一是%G,它直接移到文件末尾。在日志文件中特别有用。

回答

我多年来一直随身携带Vi Reference Card。这是非常有用的。

回答

如何在模式之间进行切换(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

我想这些是最基础的

回答

正如其他几个人已经提到的那样,vitmutor是必经之路。它会教我们我们需要在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,当不使用nedit时。

  • i(切换到插入模式)
  • a(append =移至行尾并切换至插入模式)
  • esc(退出插入模式)
  • dd删除一行
  • x删除一个字符
  • :wq(保存并退出)
  • /开始搜索
  • 找到下一个
  • 向后搜索..
  • yy(猛拉)将一行复制到缓冲区
  • pp(粘贴)粘贴到这里
  • r(替换一个字符)
  • <N> <command>这是一个整洁的功能,但很麻烦,它使我们可以先输入数字然后输入命令
  • 5dd将删除5行

但此时我们可能还是
man vi并刷新记忆

尽管还有很多,但几年前我从Vi切换到nedit,我发现它具有更多功能,可以更轻松地定期使用。选项卡式编辑,增量搜索栏,列选择,复制和粘贴。对选定的行进行排序,在选定的文档,整个文档或者所有打开的文档中进行搜索和销毁。
撕下下拉菜单..
并且它支持我使用的所有语言的语法高亮显示。(多年来使用的模式文件我已经使用了很长时间。VIM现在已经相当,但是它必须引入Nedit所不具备的功能以及一种简便的方法在再次切换之前迁移我的特征码文件。

回答

学习这些命令时运行vimtutor也很好

回答

我插入模式(转义退出)
dd删除行
Shift -y" Yank"(复制)行
p'Put'(粘贴)行
shift-v用于选择文本的可视模式(尝试"拉"此文本并将其"放入"某处。
ctrl -w n创建新窗口(我们可以在此处打开文件或者开始新文件)
ctrl-w v垂直分割现有窗口
ctrl -n(在插入模式下)自动完成(如果支持)
:!运行shell命令,通常以standard作为文件或者选择(shift-V)

有用的插件:
*缓冲区资源管理器使用\ be查看缓冲区中的文件(并选择重新打开)

回答

我喜欢这个QRC!

http://www.fsckin.com/wp-content/uploads/2007/10/vi-vim_cheat_sheet.gif

回答

我最大的提示:ctrl+q可以保存我们不小心按ctrl+s来保存正在处理的文件的日期

回答

NB vi不是vim! vim正在迅速转变为新世纪的emacs。 nvi可能是最接近原始vi的东西。这是一个很好的提示:" xp"将交换两个字符(尝试一下)。

回答

IBM的最新Vim教程非常好

回答

在文件中的所有位置将" foo"替换为" bar"
:%s / foo / bar / gc

回答

我发现无可替代的(因为它也可以在vi中工作,与vim的可视模式不同)是标记。我们可以用" m"(小写)标记各个点,然后用我们选择的字母(例如x)标记。然后我们去其他地方,可以返回" x"(反引号)到确切的位置,或者返回" x"(撇号)到该行。

这些动作可以用作命令的参数(拖动,删除等)。例如,我们要删除10行;而不是计数然后移至最上面的行并输入10dd,我们可以转到块的开始或者结尾,按" mm"(标记m),然后转到块的另一端,然后按d'm(删除撇号m)。如果在此示例中使用反引号而不是撇号,则删除将按字符而不是按行进行。尝试用"标记m"在行的中间进行标记,移至另一行的中间,然后输入" d反引号m",我们将明白我的意思。

回答

" ~/.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'命令(在命令模式下)将撤消我们键入的最后一个命令。我们可以重复使用此命令来撤消保存文件之前可能犯的错误。

回答

有关大量Vim技巧的信息,请参见http://www.rayninfo.co.uk/vimtips.html,从基本的不能运行的知识到非常复杂的东西,我们可能从未想过要尝试。

回答

尽管这是个人喜好问题,但我发现要做的基本事情之一是将Esc重新映射到其他内容。

我发现到达Esc键退出插入模式非常不舒服,但是Vim的妙处在于允许键映射。

我目前正在使用以下使用Control + S的映射:

inoremap <C-s> <Esc>:w<CR>

这具有成为我已提交到内存的键映射的优点,并具有每次我进入正常模式时都保存工作的添加价值。是的,我知道这很疯狂,但是无论如何我都会经常点击保存命令。你知道这就像一个坏习惯。

回答

我喜欢Bram Moolenaar和Oleg Raisky撰写的《 Vim 5.6参考指南》。
我们可以直接以小册子形式打印它,易于阅读,我总是将它放在身边。
这有点老了,但是Vi的寿命是8年?

回答

Vim Tips Wiki列出了许多很棒的命令。

回答

:set ignorecase smartcase

使搜索不区分大小写,除非搜索包含大写字母。也许不是最必不可少的,但是我发现自己在任何地方进行编辑时都设置此选项。它在我拥有的任何vimrc文件中。

回答

真正的力量在于搜索。以下是基本命令:

/ Steve将在文本中找到" Steve"的第一个实例。
n将在文本中找到下一个"史蒂夫"。
:%s // Stephen / g会将我们刚刚搜索的所有" Steve"实例替换为" Stephen"。

并不是为了提升自己,而是我写了一篇有关此主题的博客文章。对于初学者来说,它着重于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

回答

没有人提到茂盛的雄鹿吗? Google并安装它;比我们可能拥有的默认ctag好得多。要使用它,请cd至项目根目录并键入

:!ctags -R。

建立一个项目中所有内容的数据库... java,c ++,python,ruby,javascript,任何东西,都在称为标记的文件中。

:help ctags用于使用生成的标签的大量命令,太多了,无法总结。
将光标放在函数名称上,键入CMD],以打开定义它的文件。像这样的更多命令。很快就变成了第二天性……几乎与IDE一样好(而且VIM永远不会让我们失望,他们通常会蚀食。