Vim 在写入文件时似乎卡住了

标签 vim terminal

我在 OSX 和 Vim 中使用 Terminal.app。每次我尝试写入/保存特定文件(它恰好是 .scss 文件)时,Vim 似乎都会挂起。我知道它成功写入了文件,但它永远不会给我控制权。相反,我在底部看到文件名,光标在行尾闪烁。我尝试过 Ctrl-Esc、Ctrl-c 和 Ctrl-[ 均无济于事。

如果我退出 Terminal.app 并重新打开它,我可以看到卡住的 Vim 进程仍在事件监视器中运行。

我可以很好地编写其他文件。

我也在使用 CodeKit 来观看 .scss 文件,但认为这可能是原因,我退出 CodeKit 并尝试用 Vim 再次写入该文件,但它仍然卡住了。

如果我使用 MacVim,它似乎确实可以正确写入,但它似乎无法通过 Terminal.app 工作。

如有任何建议,我们将不胜感激,谢谢!

编辑

这是我当前的.vimrc:https://www.dropbox.com/s/1r72shv47f07crs/.vimrc

我使用的是 Vim 7.3,详细信息如下:

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jun 20 2012 13:16:02)
Compiled by root@apple.com
Normal version without GUI.  Features included (+) or not (-):
-arabic +autocmd -balloon_eval -browse +builtin_terms +byte_offset +cindent 
-clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
-conceal +cryptv +cscope +cursorbind +cursorshape +dialog_con +diff +digraphs 
-dnd -ebcdic -emacs_tags +eval +ex_extra +extra_search -farsi +file_in_path 
+find_in_path +float +folding -footer +fork() -gettext -hangul_input +iconv 
+insert_expand +jumplist -keymap -langmap +libcall +linebreak +lispindent 
+listcmds +localmap -lua +menu +mksession +modify_fname +mouse -mouseshape 
-mouse_dec -mouse_gpm -mouse_jsbterm -mouse_netterm -mouse_sysmouse 
+mouse_xterm +multi_byte +multi_lang -mzscheme +netbeans_intg -osfiletype 
+path_extra -perl +persistent_undo +postscript +printer -profile +python/dyn 
-python3 +quickfix +reltime -rightleft +ruby/dyn +scrollbind +signs 
+smartindent -sniff +startuptime +statusline -sun_workshop +syntax +tag_binary 
+tag_old_static -tag_any_white -tcl +terminfo +termresponse +textobjects +title
 -toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo 
+vreplace +wildignore +wildmenu +windows +writebackup -X11 -xfontset -xim -xsmp
 -xterm_clipboard -xterm_save 
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -D_FORTIFY_SOURCE=0 -Iproto -DHAVE_CONFIG_H -arch i386 -arch x86_64 -g -Os -pipe
Linking: gcc -arch i386 -arch x86_64 -o vim -lncurses

这就是我的 .bash_profile 中的全部内容:

# Tell ls to be colourful
export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

# Tell grep to highlight matches
export GREP_OPTIONS='--color=auto'

最佳答案

终于找到问题的原因了。它确实与文件权限有关。我在同一目录中创建了一个新的 test.scss 文件,并且能够在 Terminal.app 中使用 vim 保存对其所做的更改。然后,我比较了 test.scss 文件和给我带来麻烦的主 style.scss 文件的权限。结果如下:

测试.scss

-rwx------

还有 style.scss(给我带来麻烦的文件)

-rwx------@

我怀疑 CodeKit 在最初扫描文件时(由 CodeKit)向文件添加了一些额外的文件属性,并且这些额外的属性(如 @ 所示)是罪魁祸首。这可以解释为什么即使 CodeKit 没有运行我仍然遇到这个问题。我使用 xattr 命令来检查附加属性,该属性为我提供了 com.apple.ResourceFork。然后,我使用带有 -d 标志的 xattr 从文件中删除这个附加属性,问题得到解决。

xattr -d com.apple.ResourceFork style.scss

我怀疑这是一个相当模糊和具体的情况,但希望对其他人也有帮助。

关于Vim 在写入文件时似乎卡住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12748340/

相关文章:

vim - Tmux:失去焦点时自动隐藏面板

regex - 如何在 Vim 中只替换全字匹配?

bash - 当使用 diff 比较文本文件时,它将两个相同的文件标记为不同的,为什么?

function - 如何在 bashrc 中创建一个函数来接受参数?

android - 无法打开本地终端

c++ - 为 c++ 中的传入 ssh 连接提供自定义终端 session

vim - 如何在Vim中删除每行末尾的换行符?

vim - Neovim 异步缓冲区等待

通过使用 Scroll-Lock 和字母键在任何程序中进行类似 Vim 的移动

ios - 无法在我的 Mac OS X 终端中导航目录。我得到 “No such file or directory”