Vi & Vim

使用vi和Vim系列文本编辑器的人员的问答



4
如何轻松创建和维护表?
这是我在某些文档中使用的表(的一部分): +---------------+------------------------+---------------------------------------+ | TASK NAME | WHEN | DESCRIPTION | +---------------+------------------------+---------------------------------------+ | db:seed | On every update | Data required for the application to | | | | run; you should always be able to | | | | safely execute this multiple times | | | | for an …

3
如何仅在视觉选择内替换?
如何使vim 仅替换视觉选择中的字符,而不替换行中的其他字符?例: 线: int arr[] = { 00 01 02 03 04 05 05 /* ... lots more like this*/}; 视觉选择: { 00 01 02 03 04 05 05 /*... lots more like this*/} 命令: :'<,'>s/\ /\,0x/g 预期: int arr[] = {0x00,0x01,0x02,0x03 /* and so on*/}; 但是,执行这些操作后,实际结果是: int,0xarr[],0x=,0x{0x00,0x01,0x02,0x03 /* and …

3
为什么ci“不能在引用区域内,而ci(仅在括号内有效?
使用ci"光标时,不必位于双引号区域。 |String somestring = "some text"; 假设管道位于光标位置,ci"将使其跳至引用区域。 另一方面,使用时ci(,光标必须在括号内才能起作用,并且不会将光标移到括号内。 这种行为差异的原因是什么?我假设有一种方法可以映射键,以便这种行为存在。这样做有什么弊端吗?

8
如何垂直移动直到到达非空白字符?
在带有缩进代码的非常长的文件中,将光标直接移到光标上方或下方限制缩进的一行文本可能会有所帮助。 (执行此操作的一种方法可能是通过缩进折叠方法,即折叠当前的缩进级别,这会将限定缩进级别的行折叠成仅一个光标j或k远离光标。但是,我发现没有缩进折叠的情况能够处理我感兴趣的缩进。) 这是一个示例,光标用下划线标记_(在class Bazz和定义之间的第二个字符列处class Qux),但是假设modules中的段落或行数未知或可变: module Foo # lots of code... end module Bar class Baz # ... end class Bazz # lots of code... end _ class Qux # ... end class Quux # lots of code... end end ...我怎么能快速导航到o的module Bar光标上方或n的end光标下方在最后一行?请注意,垂直列包含空格,但在class定义之间的第二列中也没有字符。

5
如何打开性能良好的大文件?
我有几GB的服务器日志文件(在Ubuntu上)。当我尝试打开它们时,在文件加载到Vim时,终端会锁定一分钟左右。有没有一种减少时间的方法,例如通过设置Vim来按需加载文件,或通过其他方法?

1
如何使用Vundle安装NERDTree?
我开始使用Vim,我选择了Vundle而不是Pathogen。 我想知道是否可以使用Vundle安装NERDTree。 我正在启动Vim并搜索NERDTree,如下所示: :BundleSearch NERDTree 但是它没有找到插件,只是: "Keymap: i - Install plugin; c - Cleanup; s - Se| arch; R - Reload list |~ "Search results for: NERDTree |~ Plugin 'nerdtree-ack' |~ Plugin 'FindInNERDTree'


2
如何保存我没有写权限的文件?
有时,我会以自己的用户身份打开文件并进行一些修改,而没有注意到或“忘记” [read-only]状态行中的警告(/etc例如,一些随机配置文件/etc/resolv.conf)。 :w!显然在这种情况下会失败,因为我的用户仍然没有写权限。所以我必须:w /home/filename离开,而且sudo mv ...非常不舒服。 有没有一种方法可以让我临时升级为root以便能够保存当前打开的文件?(假设我在sudoers或/并且我可以su直接进入)?

6
Python 3的Vim代码完成
我正在运行Debian Jessie并使用当前的vim-nox(带有+ python -python3)。我在尝试使用Python 3编程时遇到了困难,因为我在处理Python 3代码完成方面遇到困难。 YouCompleteMe完全不支持Python3。jedi-vim确实支持Python 3补全功能,但前提是我正确理解了+ python3选项。从Debian Developers的几篇文章中看来,用+ python3标志编译Vim确实没有用。因此,我剩下了python-mode插件。 除了python-mode似乎无法维护(请参阅打开的pull-requests和最后的提交)并且当前在其master分支中存在有关绳索的巨大错误外,它还会干扰YouCompleteMe。我确实可以使用一些Python 3代码完成功能,但前提是必须完全禁用YouCompleteMe。将python文件类型的YCM列入黑名单或禁用python文件的YCM完成不起作用,每次打开vim时都会收到一条YCM警告。 所以我的问题是: 如何在不停用YouCompleteMe(我希望用于其他编程语言)的情况下,使Python 3自动补全功能在当前的Debian发行版上工作?对于如此重要​​的编程语言(Python 3不再被认为是新的。),为什么目前无法维护的插件是代码完成的唯一选择?

2
Vim中的弹性制表符?
Vim中是否存在允许弹性制表符的插件或内置功能?我搜索了一下,发现一些参考资料说在Vim中是不可能的,但是它们已经很老了。 有没有办法在Vim中设置弹性的制表符?我也很适合Neovim的解决方案,因为无论如何我都会使用它。

3
使用正则表达式查找和替换
我有一个带有一堆用户默认值的文件。我想更改一些文本,但是我在努力寻找匹配器和替换器。使用以下示例: ############################################################################### # Trackpad, mouse, keyboard, Bluetooth accessories, and input # ############################################################################### # Trackpad: enable tap to click for this user and for the login screen defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true 我想替换# Trackpad: ...为running "Trackpad: ..." 解决问题的方法是,我使用正则表达式测试器提出了一些建议: /\n\n#\s(.*)/g 如果我尝试在Vim中使用它,则对我不起作用: :/\n\n#\s(.*)/running "\1"/g 我想我的问题可以归结为两个具体问题: 如何避免搜索\n字符,而是确保#没有出现在搜索组的末尾? 如何有效使用捕获组? 以下是一些很好的答案。很难在这三者之间进行选择,但是我认为所选答案对于我的原始规格而言是最准确的。我建议您尝试使用实际文件中的所有三个答案,以查看您对它们的感觉。

2
如何在可视模式下阻止替换代码?
我有一个要替换前两个字符的项目列表: a) item 1 b) item 2 c) item 3 最快的方法是什么: * item 1 * item 2 * item 3 我有一种使用可视模式的方法(Ctr-v,jjj,但是需要执行两个替换命令。irc,可以使用1个命令完成此替换)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.