什么是必要的 vim 命令?新用户需要知道哪些命令以避免出现问题?请每条评论只写一个命令。
我认为不可替代的是标记(因为它在vi中也可以使用,而vim的可视模式则不行)。您可以使用m
(小写)和您选择的字母(例如x)标记各种位置。然后,您可以移动到其他地方,并使用`x
(反引号字母)返回到确切的位置,或者使用'x
(撇号字母)转到该行。
这些移动可以用作命令的参数(复制、删除等)。例如,您想要删除10行;而不是计数,然后移动到最顶部的行并输入10dd
,您可以进入块的开头或结尾,按下mm
(标记m),然后移动到块的另一端,按下d'm
(删除撇号m)。如果在此示例中使用反引号而不是撇号,则删除将按字符而不是按行进行。尝试在行中间使用“标记m”进行标记,移动到另一行的中间,然后输入“d反引号m”,您就会明白我的意思。
ma
会将书签放置在光标位置,``a` 则会滚动到该书签处。 - Yktula当我学会使用*或#进行搜索时,我感到非常高兴。它们分别可以向下或向上搜索光标下的单词。在使用之前,请确保先执行:set incsearch
和:set hlsearch
命令。
当您需要执行一些重复的操作时,宏通常比正则表达式更快。只需键入
q[0-9a-z] in normal mode
qq
因为它很快。 在正常模式下按下 q 键 再次停止录制。 然后只需键入即可。
@[0-9a-z] in normal mode
重复您刚刚录制的内容。
@q
对于上面的示例,您还可以重复使用宏。假设您编写了一个宏,用于跳到一行的开头,插入制表符,然后向下移动一行。然后,您可以通过键入“@q”来运行宏以进行测试。然后,您可以通过键入“9@q”来重复该操作九次。
: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
虽然这是个人偏好的问题,但我发现其中一个必要的事情是将Esc键重新映射为其他键。
我发现按下Esc键退出插入模式非常不舒服,但Vim的美妙之处在于它允许按键映射。
我目前使用以下映射,使用Control + S:
inoremap <C-s> <Esc>:w<CR>
这有一个优点,就是它是我已经记住的关键映射,并且每次进入正常模式时都可以自动保存我的工作。是的,我知道这很疯狂,但我无论如何都会频繁地使用保存命令。就像一个坏习惯,你懂的。
首先,您需要知道如何关闭vi:
按下ctrl-c,输入:q!
其他内容可以在vimtutor中找到。通过在命令行中键入vimtutor启动vimtutor。
:q!
?为什么要用 Control-C?为什么不直接使用 ESC 键? - tzot