【问题标题】:Vim - how to store and execute commonly used commands?Vim - 如何存储和执行常用命令?
【发布时间】:2009-08-24 11:01:01
【问题描述】:

如果我想用相同的命令集处理一批文本文件,例如:

:set tw=50
gggqG

我可以保存上面的并使用快捷命令运行它吗?

【问题讨论】:

  • 我不使用 ViM (Emacs ... ;-)) 但你想要的功能必须像任何地方一样被称为“宏”,你应该谷歌。
  • 您正在寻找“vim 宏”。
  • 这里是:vim.wikia.com/wiki/Macros :-)

标签: text editor vim


【解决方案1】:

如果您只想使用一次,请使用其他答案中指定的宏。如果您想更频繁地执行此操作,可以在 .vimrc 文件中包含以下行:

:map \r :set tw=50<CR>gggqG

这将映射\r,以便在您按下\r 时执行您的两行。当然你也可以选择不同的快捷键,比如&lt;C-R&gt; (Ctrl+R) 或者&lt;F12&gt; 什么的。

【讨论】:

  • 我可以将它映射到键入的命令而不是键盘快捷键(如执行脚本)吗?我可以想象我会用完钥匙!
  • 是的,如果你愿意,你甚至可以将其映射到hellomynameisjon :)。
  • 那将是 ":map \hellomynameisjon :set tw=50gggqG"?我只是按 ESC 然后输入?
  • 不,反斜杠包含在击键中。如果你这样做,你必须输入\hellomynameisjon,并带有反斜杠。除此之外,你是对的。
  • 查看 rson 的解决方案,将其与冒号一起使用。
【解决方案2】:

.vimrc 中的以下内容将定义一个新命令 Wrap 来执行您想要的操作。

command! Wrap :set tw=50 | :normal gggqG

:Wrap打电话

【讨论】:

    【解决方案3】:

    作为一个非常快速的开始,把它放在你的 .vimrc 中:

    " define the function
    " '!' means override function if already defined
    " always use uppercase names for your functions
    function! DoSomething()
        :set tw=50
        gggqG 
    endfunction
    
    " map a keystroke (e.g. F12) in normal mode to call your function
    nmap <F12> :call DoSomething()<CR>
    

    注意:上面的格式化代码看起来很糟糕,但是以 " 开头的行是 cmets。

    【讨论】:

      【解决方案4】:

      除了宏,您还可以使用argdo。此命令将对所有打开的文件执行相同的操作。以下是使用:argdo:normal 格式化所有打开文件的方法:

      shell> vim *.txt
      
      :argdo exe "normal gggqG"|up
      

      【讨论】:

        【解决方案5】:

        在你去写几千行之前.vimrc(这是一件好事,但你可以推迟一段时间),我想你可能想看看普通的录音,特别是你可以考虑使用qx(其中 x 是任意键)用于录制,q 用于完成录制,@x 用于执行录制宏。

        【讨论】:

        • 每个文件我只会运行一次宏。有什么办法可以保存录音吗?
        • 说实话,我不知道 ;-) 我不这么认为。但是只要您不退出 vim,记录就会在所有文件中持续存在。试试:help repeat
        【解决方案6】:

        是的,重要的词是

        但似乎 :set tw=50 之类的“命令”最好包含在 .vimrc 文件中,因此 vim 每次启动时都会使用它。

        【讨论】:

          猜你喜欢
          • 2011-01-25
          • 1970-01-01
          • 1970-01-01
          • 2018-04-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-14
          相关资源
          最近更新 更多