Existe uma maneira de dizer ao emacs / vi / vim (na linha de comando) que eu quero visualizar o arquivo em view-mode
ou read-only
.
Eu sei como abrir um arquivo como somente leitura se o emacs / vi / vim já estiver em execução.
Existe uma maneira de dizer ao emacs / vi / vim (na linha de comando) que eu quero visualizar o arquivo em view-mode
ou read-only
.
Eu sei como abrir um arquivo como somente leitura se o emacs / vi / vim já estiver em execução.
Respostas:
Para o emacs:
emacs FILE --eval '(setq buffer-read-only t)'
Não há opção de inicialização para forçar somente leitura.
Editar:
se você colocar esta pequena função no script de inicialização do shell (.bashrc, por exemplo), poderá abrir um arquivo somente leitura, digitandoev file_to_view
ev() {
emacs "$1" --eval '(setq buffer-read-only t)'
}
vim -R nome do arquivo
ver nome do arquivo
Basicamente vim no modo somente leitura; simples!
Como sugerido pelo comentário, caso view
esteja vinculado a plain vi
, aqui estão os comandos bash para primeiro inspecionar a situação e depois corrigi-la:
# non-destructive inspection
which vim
which view
ls -l $(which view)
# overwrite current view with symlink to vim, requires root
ln -sfv $(which vim) $(which view)
vim
possui realce de sintaxe, mas view
não, talvez view
seja um link para uma versão mínima do vim
que não tenha realce de sintaxe compilado. Compare as saídas do :version
comando.
argv[0]
para decidir seu comportamento. É um truque comum; Às vezes, o AFAIK GCC e Bash também fazem isso.
vim -R <file>
permite escrever com :w!
vim -c ":set nomodifiable" <file>
Impede que o usuário faça alterações no arquivo no buffer. Mas o usuário pode tornar o buffer modificável com:set modifiable
Você poderia usar
vim -c ":noremap q :q<cr>" -c ":map : <Esc>" -c ":set nomodifiable" <file>
para impedir que o usuário desative o "nomodificável" e permita que o usuário saia pressionando q
. Mas, então, o usuário não pode entrar no modo de comando, o que pode ou não ser o que você deseja.
Você também pode abrir o arquivo com o comando less:
less <file>
Para visualizar o arquivo em um ambiente semelhante ao vim, mas sem a capacidade de alterar o arquivo.
less
, embora como @nxdrvr aponte, você pode pressionar a tecla v para abrir o arquivo no modo editável emvi
Pequeno acompanhamento para a resposta aceita: você pode usar o alias no shell para reduzi-lo a um único comando. Por exemplo, no bash, você pode colocar o seguinte no seu .bashrc:
emacsro() {
emacs $1 --eval '(setq buffer-read-only t)'
}
(conchas diferentes terão formatos diferentes para fazer isso, mas você entendeu)
Eu adicionaria isso como um comentário em resposta à resposta aceita, mas não parecia possível ter um bloco "código" de várias linhas em um comentário e (no bash de qualquer maneira) o código acima realmente precisa ser em 3 linhas separadas.
Para visualizar apenas o arquivo sem a capacidade de editar:
cat <file> | less
Em less
você pode ir para "editar modo de arquivo" pressionando a vtecla Mas você não pode editar a entrada padrão; portanto, canalizar a saída cat <file>
para menos, para less
de ir para o modo 'editar' pressionando 'v'.
Para vim, a mesma abordagem
cat <file> | vim -
v
sugestão. Bacana.
cat
. Apenas use <FILENAME less
.
<file> less
daria um erro, suponho que você quis dizer less <file>
, mas, conforme explicado na resposta, ao usar less
diretamente, o usuário pode pressionar a tecla v e entrar no modo de edição. Tubulação cat
para less
impedir que isso aconteça.
less < FILENAME
, o que lhe dá "Não é possível editar a entrada padrão" quando você pressiona V . Da mesma forma com Vim: vim - < FILENAME
.
Para o emacs, você também pode usar o modo de exibição .
emacsclient --create-frame --eval '(view-file "/tmp/EXAMPLE")'
ou alternativa dentro de um terminal:
emacsclient --nw --eval '(view-file "/tmp/EXAMPLE")'
Ou você pode usar meu script wrapper
enviar um arquivo para fora do padrão, pode ser aceitável, dado o tamanho do arquivo
cat <file> # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines
Não vou discordar para que ninguém responda aqui, mas gostaria de acrescentar mais informações sobre o Read-only Mode
arquivo. De acordo com a documentação detalhada Modo somente leitura Às vezes, você deseja examinar um arquivo, mas deseja protegê-lo contra pressionamentos e alterações de teclas inadvertidas. (Você pode chamar um arquivo longo para praticar os movimentos do vi ou pode rolar através de um arquivo ou programa de comando). Você pode inserir um arquivo no modo somente leitura e usar todos os comandos do movimento vi, mas não poderá alterar o arquivo.
Para examinar um arquivo no modo somente leitura, digite:
$ vi -R file
ou:
$ view file
(O comando view, como o comando vi, pode usar qualquer uma das opções da linha de comandos para avançar para um local específico no arquivo.) Se você decidir fazer algumas edições no arquivo, poderá substituir o modo somente leitura por adicionando um ponto de exclamação ao comando write:
:w!
or:
:wq!
Se você tiver algum problema ao escrever o arquivo.
Para mais ref aqui